2

我们有一个实习生写了

$this->method(ct);

代替

$this->method('ct');

这不会引发错误,但我想要它。如何?

我不喜欢 PHP 猜测。

4

3 回答 3

2

打开 PHP 错误报告,error_reporting(E_ALL)以便报告所有警告和错误。从那里,您可以创建自己的错误处理方法来捕获这些警告/错误并按照您的意愿处理它们,而不是仅仅将它们通过管道输出到输出。错误处理方法的一个很好的例子就在这里http://php.net/manual/en/errorfunc.examples.php

干杯。

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

于 2013-07-12T17:09:54.193 回答
1

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

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

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

还要看一下display_errors指令

于 2013-07-12T17:07:40.630 回答
0

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

function method($arg){
   if (!is_string($arg)){
      throw new exception("argument must be a string. ".get_type($arg)." given");
   }
}
于 2013-07-12T17:04:24.320 回答