我们有一个实习生写了
$this->method(ct);
代替
$this->method('ct');
这不会引发错误,但我想要它。如何?
我不喜欢 PHP 猜测。
打开 PHP 错误报告,error_reporting(E_ALL)
以便报告所有警告和错误。从那里,您可以创建自己的错误处理方法来捕获这些警告/错误并按照您的意愿处理它们,而不是仅仅将它们通过管道输出到输出。错误处理方法的一个很好的例子就在这里http://php.net/manual/en/errorfunc.examples.php
干杯。
编辑:事实上,自定义错误处理方法将处理所有错误,无论它们是否被报告,因此该error_reporting
行是多余的。看看那个链接。
据记录,PHP 将未定义的常量视为字符串常量,并将常量的名称视为值。所以这段代码确实有效!
但是,它会发出警告,但该警告可能会被忽略。您可以调用error_reporting
设置输出哪些类型的错误。error_reporting
也可以在 php.ini 中设置。
我假设您有一个与生产环境分开的开发环境。如果是这样,我会将这些报告设置为您的开发和测试环境的最高级别,并为您的生产环境设置稍低的级别。在开发时,您希望面对这些消息,但在生产中您可能希望记录它们,但不向用户显示它们。
还要看一下display_errors
指令。
在您的方法中测试参数是否为字符串
function method($arg){
if (!is_string($arg)){
throw new exception("argument must be a string. ".get_type($arg)." given");
}
}