Существует ли альтернатива пространству имен, альтернативная классу class_exists () PHP?

Если вы попытаетесь использовать class_exists () внутри метода класса в PHP, вы должны указать полное имя класса – текущее пространство имен не соблюдается. Например, если мой класс:

<? namespace Foo; class Bar{ public function doesBooClassExist(){ return class_exists('Boo'); } } 

И Boo – класс (который автоматически автозагружается) и выглядит так

  namespace Foo; class Boo{ // stuff in here } 

если я попробую:

 $bar = new Bar(); $success = $bar->doesBooClassExist(); var_dump($success); 

вы получите ложный … есть ли альтернативный способ сделать это без явного указания полного имени класса (т.е. class_exits('Foo\Boo') )?

До 5.5 лучший способ сделать это – всегда использовать полное имя класса:

 public function doesBooClassExist() { return class_exists('Foo\Boo'); } 

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

Однако в версии 5.5 появилась новая конструкция:

 public function doesBooClassExist() { return class_exists(Boo::class); } 

Константа псевдомагии class может быть помещена в любой идентификатор, и она вернет полное имя класса, которое оно решит …….