2017-01-30 10 views
0

Предположим, что я включил библиотеку с классом с важными константами. Для того, чтобы получить доступ к этой константе I Could:PHP: Альтернатива помещению «Use Special Library SpecificClass» поверх каждого файла

1.) Либо использовать "использовать"

use Special\Library\SpecificClass as SpecificClass; 
$value = SpecificClass::MY_CONSTANT; 

2.) В качестве альтернативы я могу поставить полный путь:

$value = Special\Library\SpecificClass::MY_CONSTANT; 

Но я использую это " SpecificClass "в сотнях php-файлов, поэтому мне нравится определить, что« SpecificClass »по умолчанию« Special \ Library \ SpecificClass ».

Как я могу это сделать?

+1

Явный лучше, чем неявный. Если вы используете достойную IDE, это наложение практически автоматическое. Если вы этого не сделаете, это крошечная копия и вставка. – deceze

+1

Я бы посоветовал делать что-либо, что приводит к тому, что 'SpecificClass' является ссылкой на' Special \ Library \ SpecificClass' по магии. Это приведет лишь к путанице в долгосрочной перспективе. – GordonM

ответ

1

Вы можете использовать class_alias() для этого:

class_alias('Special\Library\SpecificClass', 'SomeClass'); 

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

SomeClass::MY_CONSTANT; 

и если вы собираетесь использовать ее в пространстве имен:

use \SomeClass; 

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

+0

Ты спас меня много времени. Я чувствую себя полным noob за то, что не знал об этом, хотя я развивался несколько лет с PHP. Большое спасибо, Магнус. –

+0

@PascalKlein - нет проблем. Просто хочу отметить, что это затруднит выполнение кода, если у вас возникнут проблемы. Затем вы должны знать, что это псевдоним и где установлен псевдоним. И не стесняйтесь отмечать ответ, если он работает на вас. –