gpt4 book ai didi

php - require_once : failed to open stream

转载 作者:行者123 更新时间:2023-12-04 17:06:21 25 4
gpt4 key购买 nike

我阅读了 SO 并尝试了一些答案,但我的代码不起作用:
我有两个类(class):C:\Apache24\htdocs\phpdb\classes\dbconnection\mysqlconnection\MySqlConnection.phpC:\Apache24\htdocs\phpdb\classes\utilities\mysqlutilities\CreateTableDemo.php .
在 CreateTableDemo 中,我有以下代码:

    namespace utilities\mysqlutilities;
use dbconnection\mysqlconnection\MySqlConnection as MSC;
spl_autoload_register(function($class){
$class = 'classes\\'.$class.'.php';
require_once "$class";
});

我收到以下警告:
`Warning: require_once(classes\dbconnection\mysqlconnection\MySqlConnection.php): failed to open stream: No such file or directory in C:\Apache24\htdocs\phpdb\classes\utilities\mysqlutilities\CreateTableDemo.php on line 10`.

我理解警告,脚本在同一个文件夹中没有找到命名空间类,所以我更改了 spl_autoload_register寻找相对路径: __DIR__."\\..\\..\\classes\\.$class.'.php' .我得到
warning: `Warning: require_once(C:\Apache24\htdocs\phpdb\classes\utilities\mysqlutilities\..\..\classes\dbconnection\mysqlconnection\MySqlConnection.php): failed to open stream: No such file or directory in C:\Apache24\htdocs\phpdb\classes\utilities\mysqlutilities\CreateTableDemo.php on line 10`.

我找不到将脚本定向到命名空间类的方法。
在此先感谢您的帮助。

最佳答案

在单独的文件中创建一个自动加载器类:

class Autoloader {
static public function loader($path) {
$filename = __DIR__.'/classes/'.str_replace("\\", '/', $path).".php";

if (file_exists($filename)) {
include($filename);
$aClass = explode('\\', $path);
$className = array_pop($aClass);
if (class_exists($className)) {
return TRUE;
}
}
return FALSE;
}
}
spl_autoload_register('Autoloader::loader');

并将其包含在您的索引文件(或其他文件)中。
它将加载位于文件夹“classes”中的所有命名空间类。
require_once '/PATH_TO/autoload.php';

顺便说一句:诀窍是将反斜杠替换为常规斜杠。
对我来说很好用。

编辑:将 autoloader.php 放在与“classes”文件夹相同的级别。 :-)

关于php - require_once : failed to open stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55010435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com