题
使用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__'))
不隶属于 StackOverflow