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


Is there a way to throw an error for undeclared constants?

我们有一个实习生,他写了

$this->method(ct);

而不是

$this->method('ct');

这不会出错,但我希望它出错。怎么会出错?

我不喜欢PHP猜测。

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

干杯。

EDIT:事实上,无论是否报告,自定义错误处理方法都会处理所有错误,因此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");
   }
}