使用PHP的魔术常数的最佳实践是什么,例如 __LINE__ , __FILE__, __FUNCTION__, __CLASS____METHOD__?

例如我使用 __LINE____CLASS__ 要找到这样的SQL错误:

$result = mysql_query($query)
or die("Error SQL line ".__LINE__ ." class ".__CLASS__." : ".mysql_error());

这是可以接受的做法吗?

有帮助吗?

解决方案

您展示的练习有两个缺点:

  • 您没有显示错误发生的文件 - 您必须有一个 非常 严格的文件结构将类映射到文件1:1以使其有用

  • __CLASS__ 如果错误发生在继承的类中,将向您显示错误的结果。采用 get_class($this) 获取实际的当前课程。

除此之外,使用这些常数是完全可以接受的。注意

  • __FUNCTION____CLASS__ 在PHP 4.3中添加

  • __METHOD__ 自PHP 5.0.0以来可用

  • __DIR____NAMESPACE__ 自PHP 5.3以来可用。

文档

其他提示

这些常数的目的是调试和记录。这正是您正在做的。

__FILE__ 也可以用于相对文件路径(例如 dirname(__FILE__)).

我唯一可以给出的建议是,并非所有魔术常数都是定义的。因此,如有疑问,请使用 if(defined('__MAGIC_CONSTANT__'))

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top