PHP自动加载命名空间和内置类


spl autoload register - PHP autoloading with namespaces and built-in classes

我使用下面的代码片段来自动加载我的php类

spl_autoload_register(function ($path) {
    $path = strtolower(str_replace('''', '/', $path));
    require_once "./$path.class.php";
});

现在我正在使用我的类,如use Core'ClassA as ClassA;use ABC'ClassBBC as ClassBBC,它的工作完美。

但是当我想创建一个php内置类mysqli的新实例时,我得到以下警告:

Warning: require_once(./mysqli.class.php): failed to open stream: No such file or directory in /var/www/html/projectA/autoloader.php on line 9

我怎么能强制自动加载器加载mysqli不管我的自动加载器?

这里有几点:

  • 首先,您应该在使用file_exists
  • 之前检查该文件是否存在。第二,不要以"。/"开头。您应该只使用绝对路径。PHP -打开流失败:没有这样的文件或目录第三,你不需要使用require_once。由于调用了自动加载器,因此可以确定文件尚未包含在内。require_ once比require慢。

在任何情况下,你的自动加载器被mysqli调用的事实意味着它之前没有被找到,所以这是奇怪的。由于您提到您正在使用遗留代码,因此可能还需要重新注册默认的自动加载器。