使用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());
这是可接受的做法吗?
答案 0 :(得分:2)
您展示的做法有两个缺点:
您没有显示错误发生的文件 - 您必须有一个非常严格的文件结构,它将类映射到文件1:1,以使其有用
__CLASS__
将显示错误的结果。使用get_class($this)
获取实际的当前班级。
除此之外,使用这些常量是完全可以接受的。注意
__FUNCTION__
和__CLASS__
__METHOD__
自PHP 5.0.0起可用
__DIR__
和__NAMESPACE__
可用。
答案 1 :(得分:1)
这些常量的目的是调试和记录。这正是你在做的事情。
__FILE__
也可用于相对文件路径(例如dirname(__FILE__)
)。
答案 2 :(得分:1)
我能给出的唯一建议是并非所有魔术常数都被定义。因此,如有疑问,请使用if(defined('__MAGIC_CONSTANT__'))