Подтвердить что ты не робот

Есть ли альтернатива PHP с пространством имен, известная как namespace()?

Если вы попытаетесь использовать 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);

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

4b9b3361

Ответ 1

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

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

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

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

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

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