Подтвердить что ты не робот

Как использовать "корневое" пространство имен php?

У меня есть класс Exception:

namespace abc;

class AbcException extends Exception {
// blah blah
}

Он производит эту ошибку:

Class 'abc\Exception' not found ...

Вопросы:

  • Что я могу сделать, чтобы сделать эту работу?

  • Полезные документы приветствуются.

Спасибо, что прочитал мой вопрос

4b9b3361

Ответ 1

Что я могу сделать, чтобы сделать эту работу?

Использовать ведущую обратную косую черту, чтобы указать глобальное пространство имен:

namespace abc;

class AbcException extends \Exception {
// blah blah
}

Полезные документы приветствуются.

Там целая страница, посвященная этому в руководстве PHP!

Ответ 2

Класс Exception разрешен для вашего пространства имен скриптов (Руководство PHP), начиная с:

namespace abc;

Вы можете конкретно указать script, какое исключение использовать:

namespace abc;
use Exception;

class AbcException extends Exception {
// blah blah
}

В этом варианте вы видите поверх файла, какие классы вы "импортируете". Кроме того, вы можете более легко изменить /alias каждый класс Exception в файле. См. Также Правила разрешения имен в Руководстве по PHP.

В качестве альтернативы вы можете указать конкретное пространство имен всякий раз, когда вы укажете имя класса. Корневое пространство имен \, поэтому полное имя класса для исключения - \Exception:

namespace abc;

class AbcException extends \Exception {
// blah blah
}

Это работает всегда, но, тем не менее, это делает ваш код более привязанным к конкретным классам, которые могут не понадобиться, если кодовая база растет и вы начинаете реорганизовывать свой код.

Ответ 3

Это просто черный знак. Как\Exception.

Ответ 4

Хорошо использовать "использование" при включении/расширении других библиотек классов ИЛИ.

namespace AbcException;
use Exception;

class AbcException extends Exception {
    // Your Code
}