资讯专栏INFORMATION COLUMN

PHP中的魔术常量

gotham / 1985人阅读

摘要:前言中的常量大部分都是不变的,但是有个常量会随着他们所在代码位置的变化而变化,这个常量被称为魔术常量。名包括其被声明的作用区域例如。其行为类中定义的方法一致。

前言

PHP 中的常量大部分都是不变的,但是有8个常量会随着他们所在代码位置的变化而变化,这8个常量被称为魔术常量。

LINE : 文件中的当前行号

FILE : 文件的完整路径和文件名

DIR : 文件所在的目录

FUNCTION : 函数名称

CLASS : 类的名称

TRAIT : Trait的名字

METHOD : 类的方法名

NAMESPACE : 当前命名空间的名称

范例

下面让我们一起来看看它们具体是怎么使用的:

1、 LINE : 文件中的当前行号

实例:


以上实例输出结果为:

这是第 “ 2 ” 行

2、 FILE : 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

实例:


以上实例输出结果为:

该文件位于 “ E:wampwww	estindex.php ”

3、 DIR : 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

实例:


以上实例输出结果为:

该文件位于 “ E:wampwww	est ”

4、 FUNCTION : 函数名称(PHP 4.3.0 新加)。

自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。

在 PHP 4 中该值总是小写字母的。

实例:


以上实例输出结果为:

函数名为:test

5、 CLASS : 类的名称(PHP 4.3.0 新加)。

自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。

在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 FooBar)。

注意自 PHP 5.4 起 CLASS 对 trait 也起作用。

当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

实例:

";
            echo  "函数名为:" . __FUNCTION__ ;
        }
    }
    $t = new test();
    $t->_print();
?>

以上实例输出结果为:

类名为:test
函数名为:_print

6、 TRAIT : Trait 的名字(PHP 5.4.0 新加)。

自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

Trait 名包括其被声明的作用区域(例如 FooBar)。

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。

其行为 MyHelloWorld 类中定义的方法一致。

优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

sayHello();
?>

以上例程会输出:

Hello World!

7、 METHOD : 类的方法名(PHP 5.0.0 新加)。

返回该方法被定义时的名字(区分大小写)。

实例:


以上实例输出结果为:

函数名为:test

8、 NAMESPACE : 当前命名空间的名称(区分大小写)。

此常量是在编译时定义的(PHP 5.3.0 新增)。

实例:


以上实例输出结果为:

命名空间为:"MyProject"
总结

这些魔术常量常常被用于获得当前环境信息或者记录日志,你可以根据需求随意使用它们。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21967.html

相关文章

  • PHP - 魔术常量魔术方法

    摘要:魔术方法构造函数允行开发者在一个类中定义一个方法作为构造函数。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类继承假如没有被定义为的话。和函数会检查类中是否存在一个魔术方法。魔术常量魔法方法 PHP - 魔术常量 __LINE__ 文件中的当前行号 __FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。 __DIR__ 文件所在的目录。如果用在...

    qpal 评论0 收藏0
  • php超全局变量,魔术常量魔术方法

    摘要:注意和是不同的变量,处理它们的方式不同变量说明默认情况下包含了,和的数组。包含相同的信息,但它不是一个超全局变量。这些特殊的常量不区分大小写,如下几个的魔术常量名称说明文件中的当前行号。 整理了下关于php的基础知识,参考了些资料,如下: 超全局变量 超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量: $GLOBALS $GLOBALS — 引用全局作用域中可用的全部变量 ...

    mj 评论0 收藏0
  • php易错笔记-类与对象,命名空间

    摘要:类与对象基本概念如果在之后跟着的是一个包含有类名的字符串,则该类的一个实例被创建。如果该类属于一个名字空间,则必须使用其完整名称。如果一个类被声明为,则不能被继承。命名空间通过关键字来声明。 类与对象 基本概念 new:如果在 new 之后跟着的是一个包含有类名的字符串,则该类的一个实例被创建。如果该类属于一个名字空间,则必须使用其完整名称。 Example #3 创建一个实例 ...

    MartinHan 评论0 收藏0
  • PHP面向对象

    摘要:面向对象面向对象基础面向对象什么是类具有相同属性特征和方法行为的一系列个体的集合,类是一个抽象的概念。析构函数,当一个对象被销毁前,自动调用。作用是为新克隆的对象进行初始化赋值对象序列化时,自动调用。使用抽象类的作用限制实例化。 面向对象 面向对象基础 面向对象 什么是类? 具有相同属性(特征)和方法(行为)的一系列个体的集合,类是一个抽象的概念。 什么是对象? 从类中,拿到的具有具体...

    seanlook 评论0 收藏0
  • PHP中的魔术方法总结

    摘要:对象调用某个方法,若方法存在,则直接调用若不存在,则会去调用函数。魔术常量返回文件中的当前行号。在中该值总是小写字母的。返回类的方法名新加。返回该方法被定义时的名字区分大小写。你传入的参数是程序将会输出您要调用的方法不存在。 魔术函数 __construct() 实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调...

    cuieney 评论0 收藏0

发表评论

0条评论

gotham

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<