В PHP только OOP (классы, интерфейсы, исключения, ошибки ...) должны быть полностью квалифицированными. Если вы не укажете полное имя или не импортируете класс в другое пространство имен, PHP не будет возвращаться к глобальному пространству имен для его поиска.
Вы также можете использовать полностью определенные функции или константы. Функции могут принадлежать пространству имен, и фактически все основные функции принадлежат глобальному пространству имен, т.е. \
. Сначала PHP будет искать функцию в текущем пространстве имен, и it будет возвращаться к глобальным функциям или константам, если функция или константа пространства имен не существует. Вы можете выполнить микрооптимизацию, если вы указываете глобальное пространство имен явно, потому что PHP будет смотреть в глобальном пространстве имен напрямую.
namespace A {
function phpinfo(){
echo 'I am bogus';
}
phpinfo(); // vs. \phpinfo()
}
Магические константы на самом деле не являются константами вообще. Они меняют значение в зависимости от контекста. Они больше похожи на магические переменные. Следующий код недопустим, потому что эти константы не принадлежат ни одному пространству имен, даже глобальному.
namespace A {
echo \__LINE__;
}
Во время компиляции PHP заменит их фактическими значениями. Они также не могут быть импортированы по той же самой причине, они нигде не определены, они просто инструкция для компилятора.
Существуют также другие вещи, которые нельзя импортировать или использовать пространства имен, см .: Список ключевых слов .
Вы не можете использовать любое из следующих слов в качестве констант, имен классов, функций или методов.
namespace A {
\echo 'hi'; // <-- this line is invalid code
\die(1); // neither is this, even if it looks and behaves like a function
}
Некоторые люди смущенно ставят скобки после echo
или print
, рассматривая их как функции, но на самом деле это не так. Те, что указаны в скобках, ведут себя как функции, принимающие параметры, но вы не можете их импортировать.