• PHP中的预定义常量、类常量和魔术常量的区别


    PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

    对于一些基本的常量是这些常量在 PHP 的内核中定义。它包含 PHP、Zend 引擎和 SAPI 模块,如:

    PHP_VERSION

    PHP_OS

    PHP_SAPI

    PHP_EOL

    对于一些是通过加载扩展库才会出现,比如:

     

    DIRECTORY_SEPARATOR (string)

    PATH_SEPARATOR (string)

    对于上面的常量是区分大小写的。

    有八个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,也就是说魔术常量是不区分大小写的。

    PHP的几个魔术常量

    __LINE__

    文件中的当前行号。

    __FILE__

    文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

    __DIR__

    文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

    __FUNCTION__

    函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

    __CLASS__

    类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 FooBar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

    __TRAIT__

    Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 FooBar)。

    __METHOD__

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

    __NAMESPACE__

    当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

    对于可以把在类中始终保持不变的值定义为常量称为类常量。在定义和使用常量的时候不需要使用 $ 符号(是区分大小写的),常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。。

    class MyClass

    {

        const constant = 'constant value';

        function showConstant() {

            echo  self::constant . " ";

        }

    }

    class MyClass

    {

        public static constant = 'constant value';//称为静态变量

        function showConstant() {

            echo  self::constant . " ";

        }

    }

    以上内容来源:

    http://php.net/manual/zh/reserved.constants.php

    http://php.net/manual/zh/dir.constants.php

    http://php.net/manual/zh/language.oop5.constants.php

  • 相关阅读:
    分治
    #include<algorithm>
    c++标准模板库的使用
    mysql_day03
    mysql_day02
    mysql_day01
    mongodb的安装
    迭代器和生成器简单介绍
    File文件操作
    数据类型
  • 原文地址:https://www.cnblogs.com/alonely/p/8337462.html
Copyright © 2020-2023  润新知