使用PHP的Magic Constants的最佳实践

Ami*_*uda 6 php magic-constants

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

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

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

这是可接受的做法吗?

Pek*_*ica 2

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

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

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

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

  • __FUNCTION____CLASS__在 PHP 4.3 中添加

  • __METHOD__自 PHP 5.0.0 起可用

  • __DIR____NAMESPACE__从 PHP 5.3 开始可用。

文档

  • 更正: `__DIR__` 是在 PHP 5.3 而不是 5.0 中添加的。 (2认同)