这周利用公司的PHP框架,开发类,但是自动加载该类后,总是找不到该类。本文将对记录如何尝试解决这个问题和最后的一些总结思考。
问题描述:
在ActivationService.php定义类ActiveService,在Autoload.php注册回调spl_autoload_register自动将ActiveService.php中ActiveService类加载到内存,然后写一个测试类ActivationServiceTest,在ActivationServiceTest中调用ActiveService这个类的公用方法。运行ActiveServiceTest,结果显示无法找到ActiveService这个类。
错误输出: ?PHP Fatal error: Class 'ActiveService' not found in /path/to/ActivationServiceTest.php line 18
可能原因分析:
1. 可能是Autoload.php中,ActiveService.php文件的路径或者文件名写错了。仔细检查后,排除该可能性。2. spl_autoload_register调用失败。var_dump(spl_autoload_register())的结果,显示ture,排除这种可能。
3. strace -f -o log php ActivationServiceTest.php 跟踪ActivatonServiceTest.php的调用过程发现: