我用composer 是用的psr-4 现在问题来了,我有些东西不想用composer来管理加载,我自己就想用spl_autoload_register 来加载其它的文件,但是我但凡在autoload 方法里执行类相关的立马抛出无法找到此类!特别郁闷!
代码:
//重载 autoloader spl_autoload_register([__CLASS__, 'autoload'], true, true);
public static function autoload($className) { \xxx\xxx\xxx::init();//一执行到这儿就报xxx类找不到 }Fatal error : Class 'xxx\xxx' not found
难道我用了psr-4我就不能再加载我自己定义的了吗?psr-0则好像没这个问题。
-------------------------------------------额外补充内容----------------------------------------------
public function test(){ \HF\Core\Config::get('keh'); //不会报错 //重载 autoloader spl_autoload_register([__CLASS__, 'autoload'], true, true); } /** * 自动加载 * @param $className * @return bool */ public static function autoload($className) { \HF\Core\Config::get('keh');//这里报错 提示找不到Config类 }
Config.php 这个文件是随Composer一早就载入了。工在上面test()方法里调用 都不传颂 报错的。但是我在test 方法里用了sql_autoload_register 因为我要载入我其它的类。它也不可能随composer来。但是我的Config是个核心类,我要取得各种配置合并配置都需要使用到它。所以来到autoload方法里面来 我调用Config类里的方法 直接就报找不到Config 这个类。这个类跟单例不单例 实例不实例没关系。在同一个类里,Test 方法都能调用它,唯有在spl_autoload_reigest注册的方法里无法载入类。难道我还要需要再引入一次?如果我再引入一次那我的composer自动载入还有什么意思呢?
autoload里面应该是include文件啊,怎么会调用init()这种方法回复<aclass='referer'target='_blank'>@leo108:我此类里并没有单例也没有实例,就是纯静态类。init只是我打的一个方法。就算有此方法也不是需要实例化也不需要去单例。它就是一个静态方法回复<aclass='referer'target='_blank'>@邻里:你确定报的是Config类找不到的错么?你这样写,php每次遇到没加载过的类,就会执行一次Config::init(),多次init会不会有问题?此类早已载入,init只是我随意打的一个方法名称。我补充了内容上来!原因很简单,你需要在使用其他类的时候 unregister掉autoload的类~
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。