18

我有一个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);

但始终显示此消息。但图书馆正在全面运作。

提前感谢您的帮助!

4

3 回答 3

38

class_exists我相信你需要使用整个命名空间。所以像:

class_exists('Fetch\\Server')
于 2013-08-20T14:33:32.260 回答
5

正如George Steel所写,不可能检查命名空间。这是因为命名空间不存在。只有结构存在于命名空间中。请参见下面的示例:

namespace Foo;

class Bar {
}

var_dump(class_exists('Foo')); // bool(false)
var_dump(class_exists('Foo\Bar')); // bool(true)
于 2016-01-13T16:19:55.153 回答
4

You can't check directly for the existence of a particular namespace, i.e. you'd have to class_exists('Fetch\\SomeClass'). See this question too: is it possible to get list of defined namespaces

于 2013-08-20T14:39:28.380 回答