У меня все еще проблемы с пространствами имен PHP5.
У меня есть пространство имен с именем Project
, и я пытаюсь получить доступ к классу с именем registry
внутри этого Project
пространства имен с пространством имен Library
, поэтому в верхней части файла, который является Project
namespace Я использую эту строку use Library\Registry;
Registry
класс находится внутри Library
пространства имен
Это должно работать, но это не так, вместо этого ЕДИНСТВЕННЫЙ способ получить доступ к моему registry
классу внутри этого пространства имен Project
- это использовать
$this->registry = new \Library\Registry;
Я хочу использовать это вместо ...
$this->registry = new Registry;
Вот и вся причина использования
use Library\Registry;
в верхней части Project
файла пространства имен
Ниже у меня есть 3 небольших примера скриптов в структуре папок, подобных этой.
Library/registry.class.php
класс в папке моей библиотеки
Controller/controller.class.php
и класс в моем каталоге контроллеров
Controller/testing.php
тестовый файл для запуска скрипта.
E: \ Library \ Registry.class.php file
<?php
namespace Library
{
class Registry
{
function __construct()
{
echo 'Registry.class.php Constructor was ran';
}
}
}
?>
E: \ Controller \ Controller.class.php file
<?php
use Library\Registry;
namespace Project
{
class Controller
{
public $registry;
function __construct()
{
include('E:\Library\Registry.class.php');
// This is where my trouble is
// to make it work currently I have to use
// $this->registry = new /Library/Registry;
// But I want to be able to use it like below and that is why
// I have the `use Library\Registry;` at the top
$this->registry = new Registry;
}
function show()
{
$this->registry;
echo '<br>Registry was ran inside testcontroller.php<br>';
}
}
}
?>
E: \ Controller \ testing.php file
<?php
use Project\Controller;
include('testcontroller.php');
$controller = new Controller();
$controller->show();
?>
Я получаю эту ошибку ...
Fatal error: Class 'Project\Registry' not found in PATH to file
если я не использую это ниже в файле controller.class.php
$this->registry = new \MyLibrary\Registry;
Потому что в этом файле вверху у меня есть use Library\Registry;
Я должен иметь к нему доступ, как это ...
$this->registry = new Registry;
Пожалуйста, помогите мне получить это, где я могу использовать это вместо этого