使用PHP的Magic Constants的最佳实践

时间:2010-11-26 16:23:17

标签: php magic-constants

使用PHP的Magic Constants的最佳做法是什么,例如__LINE____FILE____FUNCTION____CLASS____METHOD__

例如,我使用__LINE____CLASS__来查找SQL错误,如下所示:

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

这是可接受的做法吗?

3 个答案:

答案 0 :(得分:2)

您展示的做法有两个缺点:

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

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

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

    在PHP 4.3中添加了
  • __FUNCTION____CLASS__

  • __METHOD__自PHP 5.0.0起可用

  • 从PHP 5.3开始,
  • __DIR____NAMESPACE__可用。

docs

答案 1 :(得分:1)

这些常量的目的是调试和记录。这正是你在做的事情。

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

答案 2 :(得分:1)

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