Ho pubblicato alcune domande precedentemente riguardanti l'uso di Namespace in PHP e da quello che ho ottenuto, questo codice di esempio che ho qui sotto dovrebbe funzionare.Impossibile trovare la classe con lo spazio dei nomi PHP
Tuttavia sto ricevendo errori quando provo a utilizzare Namespace in PHP come questo. Ecco il primo errore quando si esegue il codice qui sotto come è ...
Fatal error: Class 'Controller' not found in E:\Controllers\testing.php on line 6
E: \ Controller \ testing.php file
<?php
use \Controller;
include('testcontroller.php');
$controller = new Controller;
$controller->show();
?>
E: \ Controller \ testcontroller.php file
<?php
use \Library\Registry;
namespace Controller
{
class Controller
{
public $registry;
function __construct()
{
include('E:\Library\Registry.class.php');
$this->registry = new Registry;
}
function show()
{
echo $this->registry;
echo '<br>Registry was ran inside testcontroller.php<br>';
}
}
}
?>
E: file \ Libreria \ Registry.class.php
<?php
namespace Library\Registry
{
class Registry
{
function __construct()
{
return 'Registry.class.php Constructor was ran';
}
}
}
?>
Come puoi vedere ho cercato di renderlo il più semplice possibile solo per far funzionare la parte Namespace. Ho provato diverse varianti e non riesco a capirlo.
Buon esempio, l'ho capito ieri sera ma è buono per te descriverlo. Quindi penso che sarebbe meglio mettere tutte le 'classi della libreria' nello stesso spazio dei nomi come 'Library' e quindi sul testcontroller precedente potrei usare' use Library \ Classname' per ogni classe nella mia libreria che mi serve in quel controller quindi posso quindi valutarli come questo 'nuovo Registro di sistema 'ecc ... su http://www.php.net/manual/en/language.namespaces.importing.php Penso che stia dicendo che sta importando un class' quindi non ero sicuro se fosse una cattiva idea – JasonDavis
Sto cercando di limitare le dipendenze di ogni classe, ecco perché per me non è difficile usare il nome completo per la classe. – Timur
Questo è sbagliato: con 'use' si definisce anche un alias per una classe concreta. Nell'esempio 'use \ Controller; nuovo controller; 'non è molto ovvio, ma puoi provare' use Vendor \ Package \ Component \ Controller; nuovo controller'. Cosa intendo: è sbagliato, è necessario definire lo spazio dei nomi di una classe _in ogni caso_. Vedi il link nel commento di jasondeavis. Come descritto, come PHP risolve i nomi di classi relativi. – KingCrunch