如何检查php中命名空间的存在

2022-08-30 20:41:20

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

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

提前感谢您的任何帮助!


答案 1

您需要在我相信中使用整个命名空间。所以像这样:class_exists

class_exists('Fetch\\Server')

答案 2

正如George Steel所写的那样,不可能检查命名空间。这是因为命名空间不是存在的东西;命名空间中仅存在结构。请参阅以下示例:

namespace Foo;

class Bar {
}

var_dump(class_exists('Foo')); // bool(false)
var_dump(class_exists('Foo\Bar')); // bool(true)

推荐