我有一个 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 \Fetch\Server($server, $port);
但始终显示此消息。但图书馆完全正常运作。
提前感谢您的帮助!
答案 0 :(得分:25)
我相信你需要使用class_exists
中的整个命名空间。如下所示:
class_exists('Fetch\\Server')
答案 1 :(得分:4)
您无法直接检查是否存在特定命名空间,即您必须class_exists('Fetch\\SomeClass')
。也请看这个问题:is it possible to get list of defined namespaces
答案 2 :(得分:4)
正如 George Steel 所写,无法检查命名空间。这是因为名称空间不存在;只有结构存在于名称空间内。见下面的例子:
namespace Foo;
class Bar {
}
var_dump(class_exists('Foo')); // bool(false)
var_dump(class_exists('Foo\Bar')); // bool(true)