PHP 魔术常量
PHP 向每一个脚本提供了几个非常有用的魔术常量
这些魔术常量通常以双下划线 ( __ ) 开头,以双下划线 ( __ ) 结尾
PHP 魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量
但很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了
PHP 语言内置了八个魔术常量,它们的值随着它们在代码中的位置改变而改变
这些特殊的常量不区分大小写
例如 __LINE__
的值就依赖于它在脚本中所处的行来决定
魔术常量 __LINE__
魔术常量 __LINE__ 用于显示当前的行号
范例
<?php echo '这是第 " ' . __LINE__ . ' " 行','<br/>'; echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';
运行以上 PHP 脚本,输出结果如下
魔术常量 __FILE__
魔术常量 __FILE__ 包含当前文件的完整路径和文件名
如果用在被包含文件中,则返回被包含的文件名
__FILE__ 总是包含一个绝对路径 ( 如果是符号连接,则是解析后的绝对路径 )
范例
<?php echo '该文件位于 " ' . __FILE__ . ' " ','<br/>'; echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';
运行以上 PHP 脚本,输出结果如下
魔术常量 __DIR__ ( PHP 5.3.0 )
魔术常量 __DIR__ 包含当前文件所在的目录
如果用在被包括文件中,则返回被包括的文件所在的目录
以后除非是根目录,否则目录中名不包括末尾的斜杠
__DIR__
相当于 dirname(__FILE__);
范例
<?php echo '该文件位于 " ' . __DIR__ . ' "<br/>'; echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';
运行以上 PHP 脚本,输出结果如下
魔术常量 __FUNCTION__ ( PHP 4.3.0 )
魔术常量 __FUNCTION__ 返回当前函数的名称
PHP 5 以后该常量返回该函数被定义时的名字 ( 区分大小写 )
范例
<?php function test() { echo '函数名为:' . __FUNCTION__ ,'<br/>'; } test(); echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';
运行以上 PHP 脚本,输出结果如下
魔术常量 __CLASS__ ( PHP 4.3.0 )
魔术常量 __CLASS__ 返回当前类名,类名包括其被声明的命名空间(例如 Foo\Bar)
PHP 4 中该值总是小写字母的
PHP 5 起该常量返回该类被定义时的名字 ( 区分大小写 )
PHP 5.4 起 、CLASS 对 trait 也起作用,当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字
范例
<?php class test { function _print() { echo '类名为:' . __CLASS__ . "<br>"; echo '函数名为:' . __FUNCTION__ ; } } $t = new test(); $t->_print(); echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';
运行以上 PHP 脚本,输出结果如下
魔术常量 __TRAIT__ ( PHP 5.4.0 )
魔术常量 __TRAIT__ 返回当前 Trait 的名字,Trait 名包括其被声明的作用区域 ( 例 Foo\Bar )
trait 是 PHP 5.4.0 实现的代码复用的一个方法
范例
下面的范例中,从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖
其行为 MyHelloWorld 类中定义的方法一致
优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法
<?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; echo '<br/>'; echo 'trait name : ',__TRAIT__; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); echo '<br/>'; echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';
运行以上 PHP 脚本,输出结果如下
魔术常量 __METHOD__ ( PHP 5.0.0 )
魔术常量 __METHOD__ 返回当前类的方法的名字 ( 区分大小写 )
如果是用在函数中,则和魔术常量 __FUNCTION__ 是一样的效果
范例
<?php function test() { echo '函数名为:' . __METHOD__ ; } test(); echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';
运行以上 PHP 脚本,输出结果如下
魔术常量 __NAMESPACE__ ( PHP 5.3.0 )
魔术常量 __NAMESPACE__ 返回当前命名空间的名称(区分大小写)
范例
<?php namespace MyProject; echo '命名空间为:"', __NAMESPACE__, '"<br/>'; echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';
运行以上 PHP 脚本,输出结果如下