Как использовать «корневое» пространство имен php? - PullRequest
24 голосов
/ 06 июля 2011

У меня есть класс исключения:

namespace abc;

class AbcException extends Exception {
// blah blah
}

Выдает эту ошибку:

Class 'abc\Exception' not found ...

Вопросы:

  1. Что я могу сделатьсделать эту работу?

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

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

Ответы [ 4 ]

26 голосов
/ 06 июля 2011

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

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

namespace abc;

class AbcException extends \Exception {
// blah blah
}

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

Есть anВся страница посвящена этому в руководстве по PHP!

16 голосов
/ 06 июля 2011

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

namespace abc;

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

namespace abc;
use Exception;

class AbcException extends Exception {
// blah blah
}

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

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

namespace abc;

class AbcException extends \Exception {
// blah blah
}

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

2 голосов
/ 01 февраля 2016

Хорошо использовать «use» при включении / расширении других библиотек OR класса.

namespace AbcException;
use Exception;

class AbcException extends Exception {
    // Your Code
}
2 голосов
/ 06 июля 2011

Это просто черная косая черта. Нравится \ Exception.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...