魔术常量通常是用来确定代码中的输出位置,所有的魔术常量都是为了达到这种目的。特别是在程序需要打上log日志的时候,魔术变量变得尤其重要。下面介绍常见的七种魔术常量。
__CLASS__:指常量所指向的类的名称。该常量通常指类被定义的名称,而不是实例化时的名称。例如:在类的继承中子类和父类的的构造方法中都调用了__CLASS__,那个__CLASS__表示的还是在类中类本身的名称。
__FILE__:指常量所指向文件的文件名称。
__LINE__:通常和__FILE__联合使用,在用来输出所在代码中的位置行。例如:error_log('log打在文件'.__FILE__.'中的第'.__LINE__.'行');
注意:__FILE__和__LINE__两者至于当前正在执行的文件有关,而不需要去考虑别的文件是否包含或者依赖该文件。
__DIR__:作用于函数dirname(__FILE__)比较类似,返回的是文件所在位置的绝对目录。在程序中,使用绝对路径比使用相对路径运行速度要快得多,尤其是当文件中包含脚本程序时。
__FUNCTION__和__METHOD__:通常利用这两个魔术常量可以得到函数名或方法名,情况运行时,应尽可能地在程序是中使用这些魔术常量而不是对函数名称使用硬编码。比如像下面:int a=2,b=2;硬编码:if(a==2) return false;非硬编码 if(a==b) return true;
__NAMESPACE__:当前的命名空间。
如果要对程序进行调试,学会使用一些常见的魔术常量是最基本的。