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 脚本,输出结果如下

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.