我正在运行PHPunit来测试我的ZF2应用程序。我在我的Windows机器上尝试了它(在xampp下),它工作正常。但是当我将其移动到虚拟 Ubuntu 14.10 服务器时,每次测试都会收到以下错误:
Undefined variable: services
我转到/etc/php5/cli/php.ini 并设置错误报告如下:
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
测试指向的代码来自我的一个模块.php文件
public function onBootstrap(MvcEvent $event)
{
$sharedEventManager = $event->getApplication()
->getEventManager()
->getSharedManager();
$sharedEventManager->attach('user', 'log-fail', function($event) use ($services) {
$username = $event->getParam('username');
$log = $services->get('log');
$log->warn("Error logging user [$username]");
});
}
它专门抱怨线路$sharedEventManager->attach('user', 'log-fail', function($event) use ($services)
.就像我说的,我尝试编辑 php.ini 文件来抑制这样的警告,但它不起作用。我还缺少什么吗?
好的,我想通了。正如Indrasinh Bihola所说:我遗漏了一部分。嗯,这本书做到了。我借来的片段来自前面的部分,但它跳过了关键部分,并且没有指示原始部分的位置(37 页!另外,不是找借口,但我从未在 PHP 中使用过闭包,我不知道 ($services) 实际上做了什么。现在我做到了。我不会再犯同样的错误了。