我正在尝试升级我正在努力遵守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();
所以这是我现在的代码,但我似乎无法找到造成致命错误的原因......
提前致谢
答案 0 :(得分:1)
我在这里做了一些猜测,但我认为问题出在构造函数中..
$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
{
}
答案 1 :(得分:0)
我意识到问题是我的名字空间是错误的,所以如果你有相同的问题,只需检查并确保你的命名空间是正确的!