gpt4 book ai didi

PHP OOP 自动加载类命名空间问题

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

我正在尝试升级我正在处理的新项目的代码以符合 PSR-0。

我正在使用 SPL 加载程序类,但是我可能做错了什么,我只是无法发现问题所在。

我不断收到以下错误:

Fatal error: Class 'widezike\General' not found in /nfs/c03/h04/mnt/169128/domains/widezike.com/html/beta/lib/functions.php on line 14

这是我的文件夹结构:
index.php
-lib
config.php
init.php
spl-class-loader.php
functions.php
-widezike
-General.php

这是我的函数文件,它开始与服务器端代码有关:
<?php

include 'init.php';
include 'config.php';

include 'spl-class-loader.php';

$loader = new SplClassLoader('General', 'lib/widezike');
$loader->register();

use widezike\General;

//Run the output buffer
General::ob();

所以这是我现在的代码,但我似乎无法找到导致 fatal error 的原因......

提前致谢

最佳答案

我在这里进行了一些猜测,但我认为问题出在构造函数中。

$loader = new SplClassLoader('General', 'lib/widezike');

在代码中你 linked to它们是命名空间和包含路径。

我只能建议与这些一起玩,直到它起作用为止。

你可以试试:
$loader = new SplClassLoader(null, 'lib');

或者
$load = new SplClassLoad('General', 'lib');

另一方面,我个人只是使​​用一个非常简单的 spl_autoload_register 函数来为我加载类。
spl_autoload_register(function($class){

$filename = str_replace('\\', '/', $class) . '.php';
require($filename);

});

$object = new phutureproof\common\whatever();

然后我会有一个文件 /phutureproof/common/whatever.php内容:
<?php
namespace phutureproof\common;

class whatever
{

}

关于PHP OOP 自动加载类命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16939120/

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