пространство имен php [дубликат]
Я хотел углубляться больше в namespace
, однако из способов, который я пытаюсь, дает ошибка. Ниже в двух формах:
Мой класс, который находится внутри директории classes/класса.php
namespace minhaClasse;
class classe
{
public function testes(){
return "ok.. retornou!";
}
}
файл index.php, который находится в корневой директории
<?php
use minhaClasse\classe;
$ver = new classe();
echo $ver->testes();
?>
Когда я делаю это, появляется следующее сообщение об ошибке:
Fatal error: Class 'myclass\класс' not found in...
, То изменил для этой формы индекса.php
spl_autoload_extensions(".php");
spl_autoload_register();
use minhaClasse\classe;
$ver = new classe();
echo $ver->testes();
Там появляется эта ошибка:
Fatal error: spl_autoload(): Class myclass\класс could not be loaded in...
1 answers
Для работы такого кода и автоматически загружать namespace каталоги должны следовать тем же именем, которые находятся в namespace, в вашем случае уже имеет проблемы, каталог должен быть minhaClasse/classe.php
, или же namespace должно быть use classes\classe;
(внутри класса только namespace classes;
) любой из вариантов может сработать.
Отредактируйте namespace его classe
classes
для использования use classes\classe
:
namespace classes;
class classe
{
public function testes(){
return "ok.. retornou!";
}
}
И в вашем коде, за изменение namespace, что это будет работать:
spl_autoload_extensions(".php");
spl_autoload_register();
use classes\classe;
$ver = new classe();
echo $ver->testes();
Примечание: имена namespace
и pastas
(который должен иметь то же имя) бы последовать имена более простой, возможно и без ссылается на имена, которые могут затруднить чтение, это может привести к путанице classes\classe
Например minimo:
Код класса Car
следующий (обратите внимание на namespace
имя diretório
изображение):
<?php
namespace Novic;
class Car
{
private $active = 1;
public function getActive()
{
return $this->active;
}
public function setActive($value)
{
return $this->active = $value;
}
}
В предыдущую папку (например, в папке test1) был создан index.php
следующий код:
<?php
spl_autoload_extensions(".php");
spl_autoload_register();
use Novic\Car;
$car = new Car();
echo $car->getActive();
namespace
, используемый Novic\Car
, относящийся к папке и класс.
Чтение:
Есть здесь, на сайте , Как работают пространства имен в PHP?, а также PSR-4, что это хорошо использовать.
Фильмография: