zoukankan      html  css  js  c++  java
  • PHP 范围解析操作符 (::) 主要用于访问静态成员和类常量

    范围解析操作符 (::)

    范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。

    当在类定义之外引用到这些项目时,要使用类名。

    自 PHP 5.3.0 起,可以通过变量来引用类,该变量的值不能是关键字(如 selfparent 和 static)。

    把 Paamayim Nekudotayim 选作双冒号操作符的名字似乎有些奇怪。然而,这是 Zend 开发小组在写 Zend Engine 0.5(被用于 PHP 3 中)时所作出的决定。事实上这个词在希伯莱文就是双冒号的意思。

     

    在类的外部使用  ::

    selfparent 和 static 这三个特殊的关键字是用于在类定义的内部对其属性或方法进行访问的。

    <?php
    class MyClass {
        const CONST_VALUE = 'A constant value';
    }
    
    $classname = 'MyClass';
    echo $classname::CONST_VALUE; // 自 PHP 5.3.0 起
    
    echo MyClass::CONST_VALUE;

    在类定义的内部使用 ::

    当一个子类覆盖其父类中的方法时,PHP 不会调用父类中已被覆盖的方法。是否调用父类的方法取决于子类。这种机制也作用于构造函数和析构函数重载以及魔术方法

    <?php
    class OtherClass extends MyClass
    {
        public static $my_static = 'static var';
    
        public static function doubleColon() {
            echo parent::CONST_VALUE . "
    ";
            echo self::$my_static . "
    ";
        }
    }
    
    $classname = 'OtherClass';
    echo $classname::doubleColon(); // 自 PHP 5.3.0 起
    
    OtherClass::doubleColon();

    调用父类的方法

    <?php
    class MyClass
    {
        protected function myFunc() {
            echo "MyClass::myFunc()
    ";
        }
    }
    
    class OtherClass extends MyClass
    {
        // 覆盖了父类的定义
        public function myFunc()
        {
            // 但还是可以调用父类中被覆盖的方法
            parent::myFunc();
            echo "OtherClass::myFunc()
    ";
        }
    }
    
    $class = new OtherClass();
    $class->myFunc();
  • 相关阅读:
    Python基础__字符串拼接、格式化输出与复制
    Python基础__Python序列基本类型及其操作(1)
    Selenium 元素等待
    Selenium 键盘鼠标实践
    Selenium 元素定位
    Selenium 启动浏览器
    Selenium Webdriver概述
    linux虚拟机安装和xshell远程连接
    python实现dubbo接口的调用
    Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法
  • 原文地址:https://www.cnblogs.com/ryanzheng/p/11405699.html
Copyright © 2011-2022 走看看