@websiteserf

Почему autoload Путается?

У меня есть класс с пространством имен

namespace kernel;
class kernel {
static function autoload() {
...некий код автозагрузки для spl  autoload
}
static function func() {
некий код...
}
}

И второй класс в отдельном файле:

namespace data;
class validate {
static function init() {
...некий код
}
}


проблема в следующем: при использовании конструкции data\validate::init(); (в файле index.php), spl в штатном режиме подключает файл с классом validate из папки data и выполняет init(); однако при использовании data\validate::init(); внутри кода другого класса с другим пространством имен, например:

namespace requests;
class requests {
static function init() {
data\validate::init();
}
}

функция автозагрузки получает не data\validateа data\validate\data\validate
В чем проблема? При надобности предоставлю исходный код.
  • Вопрос задан
  • 185 просмотров
Решения вопроса 3
Denormalization
@Denormalization
Перед data\validate::init(); нужно ставить "\", чтобы указать что 'data' это корневой namespace, а не вложенный в requests
Ответ написан
Комментировать
@dev400
укажите глобальный namespace
\data\validate::init();
Ответ написан
Комментировать
Ну о причине вам уже ответили, вы пытаетесь загружать класс относительно текущего ns.
Так же хотел бы добавить что более удобно в начале файла использовать use что-бы было меньше путаницы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
30 апр. 2024, в 22:44
500 руб./в час
30 апр. 2024, в 21:45
20000 руб./за проект
30 апр. 2024, в 21:36
1500 руб./в час