Как проверить наличие пространства имен в PHP
У меня есть библиотека php https://github.com/tedivm/Fetch и он использует пространство имен Fetch, и я хотел бы проверить его существование в моем скрипте.
мой код скрипта:
// Load Fetch
spl_autoload_register(function ($class) {
$file = __DIR__ . '/vendor/' . strtr($class, '', '/') . '.php';
if (file_exists($file)) {
require $file;
return true;
}
});
if (!class_exists('Fetch')) {
exit('Failed to load the library: Fetch');
}
$mail = new FetchServer($server, $port);
но это сообщение всегда отображается. Но библиотека полностью работает.
заранее спасибо за любую помощь!
3 ответов
вам нужно использовать все пространство имен в class_exists
Я верю. Что-то вроде:
class_exists('Fetch\Server')
вы не можете напрямую проверить наличие определенного пространства имен, т. е. вам придется class_exists('Fetch\SomeClass')
. См. Также этот вопрос:можно ли получить список определенных пространств имен
As Джордж Сталь написал, невозможно проверить пространство имен. Это связано с тем, что пространство имен не существует; существуют только структуры в пространствах имен. См. ниже пример:
namespace Foo;
class Bar {
}
var_dump(class_exists('Foo')); // bool(false)
var_dump(class_exists('Foo\Bar')); // bool(true)