为了赞美PHPunit,autoload和namespace之间现有的大杂烩安排是这样的:
我创建了一个运行PHPUnit测试并使用命名空间自动加载的简单测试项目.我在bootstrap文件中注册自动加载,如下所示:
set_include_path(get_include_path() . PATH_SEParaTOR . "/path/to/classes/folder");
spl_autoload_register();
在单元测试中,我加载并测试我的类,如下所示:
$obj = new \some\space\someClass(); // which is in the classes/some/space folder
$this->assertTrue($obj->foo()=='bar');
Fatal error: Class ‘\some\space\someClass’ not found in testSomeClass.PHP…
解决方法:
虽然这不是特定于PHPunit的,但您需要更改:
spl_autoload_register();
至
spl_autoload_register('spl_autoload');
注册自动装带器的任何其他组件都会注销默认的__autoload().
If your code has an existing __autoload function then this function must be explicitly registered on the __autoload stack. This is because spl_autoload_register() will effectively replace the engine cache for the __autoload function by either spl_autoload() or spl_autoload_call().
所以这就是spl-autoload
与其他使用自动加载的东西一起工作的方式.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。