Я уже задал некоторые вопросы относительно использования пространств имен в PHP и из того, что я получил, этот примерный код, который у меня ниже, должен работать.Не удается найти класс с пространством имен PHP
Однако я получаю ошибки, когда я пытаюсь использовать пространство имен в PHP, как это. Вот первая ошибка при выполнении кода ниже, как это ...
Fatal error: Class 'Controller' not found in E:\Controllers\testing.php on line 6
E: \ Controller \ testing.php Файл
<?php
use \Controller;
include('testcontroller.php');
$controller = new Controller;
$controller->show();
?>
E: \ Controller \ testcontroller.php Файл
<?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: \ Library \ Registry.class.php Файл
<?php
namespace Library\Registry
{
class Registry
{
function __construct()
{
return 'Registry.class.php Constructor was ran';
}
}
}
?>
Как вы можете видеть, я попытался сделать это как можно проще, просто чтобы получить часть пространства имен. Я пробовал разные варианты и, похоже, не понимаю.
Хороший пример, я понял это вчера вечером, но хорошо для вас, чтобы описать это. Поэтому я думаю, что мне было бы лучше поставить все мои «Библиотечные классы» в такое же пространство имен, как «Библиотека», а затем на тестовом контролере выше я мог бы использовать «использовать библиотеку \ класс» для каждого класса в моей библиотеке, который мне нужен в этом поэтому я могу оценить их как этот «новый реестр» и т. д. на http://www.php.net/manual/en/language.namespaces.importing.php. Думаю, это говорит о том, что это «импорт глобального class', поэтому я не был уверен, что это была плохая идея. – JasonDavis
Я пытаюсь ограничить зависимости каждого класса, поэтому для меня нетрудно использовать полное квалифицированное имя для класса. – Timur
Thats wrong: с 'use' вы также определяете псевдоним для конкретного класса. В примере 'use \ Controller; новый контроллер, 'его не очень очевидно, но вы можете попробовать 'использовать Vendor \ Package \ Component \ Controller; новый контроллер. Я имею в виду: неправильно, что вам нужно определить пространство имен класса _ в каждом случае. См. Ссылку в комментарии jasondeavis. Описывается, как PHP разрешает относительные имена классов. – KingCrunch