【问题标题】:PHPUnit error undefined variablePHPUnit错误未定义变量
【发布时间】:2015-01-25 15:09:54
【问题描述】:

我正在运行 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

测试指向的代码来自我的 Module.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 文件来抑制这样的警告,但它不起作用。我还缺少什么吗?

【问题讨论】:

  • virtual Ubuntu 14.10 server 上检查您的 PHP 版本。
  • 您显示的代码中未定义变量 $services。
  • 我正在运行 php 5.5.12
  • 你在 Windows 机器上的 PHP 版本是什么。
  • 问题应该是:为什么这个测试在 Windows 上没有失败?

标签: php error-handling zend-framework2 phpunit


【解决方案1】:

好的,我想通了。正如 Indrasinh Bihola 所说:我遗漏了一部分。嗯,书做到了。我借用的 sn-p 来自较早的部分,但它跳过了关键部分,并且没有说明原始部分在哪里(37 页!)。另外,不要找借口,但我从未在 PHP 中使用过闭包,而且我不知道 use($services) 实际做了什么。现在我愿意。我不会再犯同样的错误了。

【讨论】:

  • 但是,是的,我现在确实感觉很愚蠢,我也应该这样做。 :(
猜你喜欢
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 2018-05-03
  • 2014-04-25
  • 2021-04-10
  • 2011-12-21
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多