использовать «глобальное пространство имен»;

Мне просто интересно, есть ли способ заставить класс вести себя так, как если бы он находился в глобальном пространстве имен, используя ключевое слово «use», поэтому этот класс будет вести себя как класс с именами только вне класса. Что-то вроде:

namespace wherever\somewhere\deep\deep\inside; use \; // root namespace.. note: this doesn't work class stuff{ //.... } 

кто угодно?

Использование глобального пространства имен не будет работать так, как вы ожидаете.

По умолчанию вы можете ссылаться на класс с расширением имен, добавив обратную косую черту – например, $x = new \PDO(...); , Попытка use \ не изменит это.

Если вы хотите сбросить обратную косую черту из классов с именами на глобальном уровне, вам необходимо use каждую из них специально. В пространствах с именами PHP любая ссылка на класс, которая не имеет пространства имен, считается находящейся в текущем пространстве имен, если на нее явно не ссылается оператор use .

например:

 use \PDO, \SplFileObject; 

теперь мы можем вызвать new PDO(...) или new SplFileObject() без обратной косой черты. Но другим глобальным классам, которые не use , по-прежнему будет нужна обратная косая черта.

Я не думаю, что ты можешь. Если кто-то найдет хороший способ, пожалуйста, разделите. Я попробовал нижеследующее, которое не работает явно (запись здесь http://www.siteconsortium.com/h/D0000H.php ). Мне было бы очень полезно иметь возможность перейти в корневое пространство имен таким образом, так как много устаревшего кода не использует пространства имен.

$ root = __NAMESPACE__; // ошибка

пространство имен AA; function foo () {print "What AA"; }

use ($ root); // ошибка

namespace $ root; // ошибка не может использовать var

пространство имен ""; // ошибка

использовать «/»; // ошибка

пространство имен "/"; // ошибка

Здесь есть пара различных проблем. Одна вещь, которую я считала странной, это то, что я могу использовать ключевое слово «require_once $ script_name», но я не могу использовать ключевое слово «namespace $ namespace_name».

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

 namespace My\Space { function myScopedFunction() { .. } } namespace { function myGlobalFunction() { .. } }