6

使用 PHP 魔术常量(例如__LINE____FILE__、和__FUNCTION__)的最佳实践是什么?__CLASS____METHOD__

例如,我使用__LINE__ and__CLASS__来定位 SQL 错误,如下所示:

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

这是可接受的做法吗?

4

3 回答 3

2

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

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

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

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

  • __FUNCTION____CLASS__在 PHP 4.3 中添加

  • __METHOD__自 PHP 5.0.0 起可用

  • __DIR__并且 __NAMESPACE__从 PHP 5.3 开始可用。

文档

于 2010-11-26T19:59:25.623 回答
1

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

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

于 2010-11-26T16:26:57.073 回答
1

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

于 2010-11-26T16:40:06.253 回答