有没有办法为未声明的常量抛出错误?

时间:2013-07-12 16:56:05

标签: php

我们有一位写了

的实习生
$this->method(ct);

而不是

$this->method('ct');

这不会引发错误,但我想要它。怎么样?

我不喜欢PHP猜测。

3 个答案:

答案 0 :(得分:2)

使用error_reporting(E_ALL)打开PHP错误报告,以便报告所有警告和错误。从那里,您可以创建自己的错误处理方法来捕获这些警告/错误,并使用它们执行您想要的操作,而不是仅将它们传送到输出。错误处理方法的一个很好的例子就在这里http://php.net/manual/en/errorfunc.examples.php

干杯。

编辑:实际上,自定义错误处理方法将处理所有错误,无论它们是否被报告,因此error_reporting行将是多余的。看看那个链接。

答案 1 :(得分:1)

记录的行为是,PHP将未定义的常量视为字符串常量,并将常量的名称作为值。所以这段代码实际上有效!

但是,它会发出警告,但该警告可能会被忽略。您可以调用error_reporting来设置输出哪种错误。 error_reporting也可以在php.ini中设置。

我假设您的开发环境与生产环境分开。如果是这样,我会为您的开发和测试环境设置最高级别的报告,并为您的生产环境设置略低的报告。在开发时,您希望面对这些消息,但在生产中您可能希望记录它们,但不会向用户显示它们。

另请查看display_errors directive

答案 2 :(得分:0)

在你的方法中测试参数是否为字符串

function method($arg){
   if (!is_string($arg)){
      throw new exception("argument must be a string. ".get_type($arg)." given");
   }
}