2016-04-14 2 views
4

У меня есть файл под названием «init.php», где я включаю все мои классы в пространство имен. Один из них будет, например: MyClass \ Helper.Пространства имен: «use as» global

Всегда в init, после этих классов есть включение другого файла (b.php), который использует MyClass \ Helper.

И, наконец, этот файл «init» требуется индексом, который также использует MyClass \ Helper.

Итак:

init.php 
    -> Require libs/Helper.php (final namespace: MyClass\Helper) 
    -> Require b.php 
     -> Use MyClass\Helper 

index.php 
    -> Require init.php 
    -> Use MyClass\Helper 

Теперь я хочу поставить в моем init.php, после включения всех классов use MyClass\Helper as Helper, но он не работает (класс не найден в других файлах, если я использую " Помощник "вместо MyClass \ Helper), и я должен поместить его вручную в b.php (включенный после классов) и в index.php.

Существует способ «сохранить» как «использовать как» для всех файлов?

+1

Звуки невозможны с использованием только функций пространств имен (в частности, ключевое слово 'use'), в соответствии с руководством по PHP http : //php.net/manual/en/language.namespaces.importing.php > Импортирование правил осуществляется на основе файлов, что означает, что включенные файлы НЕ НАЙТИ правила импорта родительского файла. –

+1

Вас может заинтересовать этот ответ: http://stackoverflow.com/a/19890311/488666 –

+0

Frosty Z, ваш комментарий верен. Пожалуйста, подумайте о том, чтобы повторить это как ответ, чтобы все могли его перенести. Пространства имен обрабатываются по-по-файлу в PHP и на многих других языках. –

ответ

0

Вся идея состоит в том, чтобы попытаться не включать ничего. Попытайтесь использовать spl_autoload_register, чтобы зарегистрировать свой автозагрузчик классов, поэтому вам не нужно использовать «include» и «require»

Смежные вопросы