我们有一位写了
的实习生$this->method(ct);
而不是
$this->method('ct');
这不会引发错误,但我想要它。怎么样?
我不喜欢PHP猜测。
答案 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中设置。
我假设您的开发环境与生产环境分开。如果是这样,我会为您的开发和测试环境设置最高级别的报告,并为您的生产环境设置略低的报告。在开发时,您希望面对这些消息,但在生产中您可能希望记录它们,但不会向用户显示它们。
答案 2 :(得分:0)
在你的方法中测试参数是否为字符串
function method($arg){
if (!is_string($arg)){
throw new exception("argument must be a string. ".get_type($arg)." given");
}
}