Bij*_*lle 3 php phpunit namespaces autoload
为了赞美phpunit,autoload和namespace之间现有的大杂烩安排是这样的:
我创建了一个运行PhpUnit测试并使用命名空间自动加载的简单测试项目.我在bootstrap文件中注册自动加载,如下所示:
set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/classes/folder");
spl_autoload_register();
Run Code Online (Sandbox Code Playgroud)
在单元测试中,我加载并测试我的类,如下所示:
$obj = new \some\space\someClass(); // which is in the classes/some/space folder
$this->assertTrue($obj->foo()=='bar');
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
致命错误:在testSomeClass.php中找不到类'\ some\space\someClass'...
虽然这不是特定于phpunit的,但您需要更改:
spl_autoload_register();
Run Code Online (Sandbox Code Playgroud)
至
spl_autoload_register('spl_autoload');
Run Code Online (Sandbox Code Playgroud)
注册自动装带器的任何其他组件都会取消注册默认值__autoload().
如果您的代码具有现有的__autoload函数,则必须在__autoload堆栈上显式注册此函数.这是因为spl_autoload_register()将通过spl_autoload()或spl_autoload_call()有效地替换__autoload函数的引擎缓存.
所以这就是spl-autoload与使用自动加载的其他任何东西一起工作的方式.
| 归档时间: |
|
| 查看次数: |
4061 次 |
| 最近记录: |