PHP双冒号::的用法

V站笔记

双冒号操作符即作用域限定操作符Scope Resolution Operator可以访问静态、const和类中重写的属性与方法。

  在类定义外使用的话,使用类名调用。在PHP 5.3.0,可以使用变量代替类名。

  Program List:用变量在类定义外部访问 

<?phpclass Fruit {    const CONST_VALUE = 'Fruit Color';}$a = 'Fruit';echo $a::CONST_VALUE; ?> Program List:在类定义外部使用:: <?phpclass Fruit {    const CONST_VALUE = 'Fruit Color';}class Apple extends Fruit {    public static $b = 'Red';    public static function doubleColon() {        echo parent::CONST_VALUE . "\n";        echo self::$b . "\n";    }}Apple::doubleColon(); ?> 程序运行结果: Fruit Color Red Program List:调用parent方法 <?phpclass Fruit {    protected function showColor() {        echo "Fruit::showColor()\n";    }}class Apple extends Fruit { ?> 程序运行结果: Fruit::showColor() Apple::showColor() Program List:使用作用域限定符 <?php    class Apple {        public function showColor() {            return $c->color;        }    }    class Banana {        public $b;        public function __construct() {            $c->color = "Banana is yellow";        }        public function GetColor() {            return Apple::showColor();        }    }    $d = new Banana;    echo $d->GetColor(); ?> 程序运行结果: Banana is yellow Program List:调用基类的方法 <?php    class Fruit {        static function color() {            return "color";        }        static function showColor() {            echo "show " . self::color();        }    }    class Apple extends Fruit {        static function color() {            return "red";        }    }    Apple::showColor(); ?>

  程序运行结果: show color

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏haifeiWu与他朋友们的专栏

System方法总结

最近在研究Android源码,突然看到有很多和System有关,什么System.arraycopy、System.nanoTime(),所以专门花时间看了一下...

852
来自专栏Phoenix的Android之旅

深入分析ClassCastException

ClassCastException时常见,只要两个不同类强转换就会有这种问题,不过下面这种错误不知道见过没

511
来自专栏绿巨人专栏

[Java] 设计模式: Code Shape - 管理你的代码结构

4036
来自专栏ShaoYL

OC语言Block 续

1339
来自专栏绿巨人专栏

[Java] 设计模式: Code Shape - 管理你的代码结构

862
来自专栏闵开慧

java概念1

public static void main(String[] args) {//其中[]也可以写在args后面,args也可以随便写成其他字母,例如asd...

34511
来自专栏逸鹏说道

Python3 与 C# 基础语法对比(List、Tuple、Dict专栏)

Python3 与 C# 基础语法对比(基础知识场):https://www.cnblogs.com/dotnetcrazy/p/9102030.html

803
来自专栏小灰灰

JDK容器学习之Queue: ArrayDeque

数组双端队列 ArrayDeque 双端队列,表示可以添加元素到(或删除,获取)队列头也可以添加元素到(或删除,获取)队列尾 ? 1. 底层数据结构 类中定义成...

1896
来自专栏飞雪无情的博客

Go语言参数传递是传值还是传引用

其实对于传值和传引用,是一个比较古老的话题,做研发的都有这个概念,但是可能不是非常清楚。对于我们做Go语言开发的来说,也想知道到底是什么传递。

1463
来自专栏服务端技术杂谈

Java编码规范

命名 类名使用UpperCamelCase风格。 领域模型相关命名:DO / DTO / VO / DAO等。 方法名,参数名,成员变量,局部变量都统一使用lo...

2994

扫码关注云+社区