gpt4 book ai didi

php - 无法找到类,即使自动加载器已加载文件

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

所以我有一个反射(reflect)我的命名空间结构的目录。自动加载器正确加载包含我的类的文件。 use 子句使用别名指定正确的类。尽管如此,PHP 表示它无法找到该类。我传统上不使用命名空间,因为这总是发生在我身上。但我试图强制自己使用良好的实践。所以,我在这里尝试理解为什么我不能让它工作。

我已经检查过自动加载器实际上已经加载了文件。我已经检查过自动加载器使用的路径是否正确。

我的类文件:

<?php
namespace classes\helpers\core_helper;

class core_helper
{


public static function create_arg_pairs($arguments)
{
.....
}


}//end core_helper


?>

我的主要应用程序文件:
<?php

ini_set("display_errors", "1");

define('AUTH_ROOT', dirname(__FILE__));

use classes\helpers\core_helper as hlpr;


function autoloader($class)
{

if(require_once AUTH_ROOT.'/'.str_replace('\\','/',$class).'.php');

}
spl_autoload_register('autoloader');

......

$temp = explode("/", substr($path['path'], 1));
//get the controller
$contoller = strtolower(array_shift($temp));
//get the method
$method = strtolower(array_shift($temp));

$argArray = hlpr::create_arg_pairs($temp);


?>

由此产生的错误是:

Fatal error: Uncaught Error: Class 'classes\helpers\core_helper' not found in /var/www/html/auth/index.php:51 Stack trace: #0 {main} thrown in /var/www/html/auth/index.php on line 51



但是我知道包含该类的文件已加载,因此正确的命名空间被传递给自动加载器,并正确转换为正确的路径。那为什么我看不到类(class)?

最佳答案

通过说

namespace classes\helpers\core_helper;

接着
class core_helper

你告诉系统你的实际类(class)是 classes\helpers\core_helper\core_helper .我希望你真正想要的是 namespace classes\helpers; .

关于php - 无法找到类,即使自动加载器已加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55836276/

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