注:本篇博客系转载,出处不可考(至少对我来说不可考...)

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

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

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

  1. <?php
  2. class Fruit {
  3. const CONST_VALUE = 'Fruit Color';
  4. }
  5.  
  6. $classname = 'Fruit';
  7. echo $classname::CONST_VALUE; // As of PHP 5.3.0
  8.  
  9. echo Fruit::CONST_VALUE;
  10. ?>

Program List:在类定义外部使用::

  1. <?php
  2. class Fruit {
  3. const CONST_VALUE = 'Fruit Color';
  4. }
  5.  
  6. class Apple extends Fruit
  7. {
  8. public static $color = 'Red';
  9.  
  10. public static function doubleColon() {
  11. echo parent::CONST_VALUE . "\n";
  12. echo self::$color . "\n";
  13. }
  14. }
  15.  
  16. Apple::doubleColon();
  17. ?>

程序运行结果:

  1. Fruit Color Red

Program List:调用parent方法

  1. <?php
  2. class Fruit
  3. {
  4. protected function showColor() {
  5. echo "Fruit::showColor()\n";
  6. }
  7. }
  8.  
  9. class Apple extends Fruit
  10. {
  11. // Override parent's definition
  12. public function showColor()
  13. {
  14. // But still call the parent function
  15. parent::showColor();
  16. echo "Apple::showColor()\n";
  17. }
  18. }
  19.  
  20. $apple = new Apple();
  21. $apple->showColor();
  22. ?>

程序运行结果:

  1. Fruit::showColor()
  2. Apple::showColor()

Program List:使用作用域限定符

  1. <?php
  2. class Apple
  3. {
  4. public function showColor()
  5. {
  6. return $this->color;
  7. }
  8. }
  9.  
  10. class Banana
  11. {
  12. public $color;
  13.  
  14. public function __construct()
  15. {
  16. $this->color = "Banana is yellow";
  17. }
  18.  
  19. public function GetColor()
  20. {
  21. return Apple::showColor();
  22. }
  23. }
  24.  
  25. $banana = new Banana;
  26. echo $banana->GetColor();
  27. ?>

程序运行结果:

  1. Banana is yellow

Program List:调用基类的方法

  1. <?php
  2.  
  3. class Fruit
  4. {
  5. static function color()
  6. {
  7. return "color";
  8. }
  9.  
  10. static function showColor()
  11. {
  12. echo "show " . self::color();
  13. }
  14. }
  15.  
  16. class Apple extends Fruit
  17. {
  18. static function color()
  19. {
  20. return "red";
  21. }
  22. }
  23.  
  24. Apple::showColor();
  25. // output is "show color"!
  26.  
  27. ?>

程序运行结果:

  1. show color

  

  

  

  

  

  

  

  

php中双冒号::的用法的更多相关文章

  1. 8.python中双冒号(::)的用法

    s[i:j:k]是,根据该“片第从i到j与第k步”.何时i和j缺席,整个序列是和s[::k]意思是“每k个项目”. 示例 首先,让我们来初始化一个列表: >>> s = range( ...

  2. 3-18 关于namespace,双冒号::的用法; SelfYield.

    关于namespace,双冒号::的用法. 防止引用多个模块在一个文件/类中,有重名的对象.::可以调用类的类方法,和常量. class Foo   BAR = "hello"   ...

  3. c++中冒号(:)和双冒号(::)的用法

    1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned ; unsigned char c; } ; XXX (2)构造 ...

  4. C++中冒号和双冒号的用法

    1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; X ...

  5. php中"::"双冒号有什么作用

    PHP代码 lazycms::$sysname 第一次见到这种表现方式,请问是双冒号什么意思 答:直接属类的方法或属性.也就是static 静态方法或属性的使用.域运算符,一般用于在B类对象中使用A类 ...

  6. php类中双冒号和->的区别

    就是为了区分对象的方法和属性,和是访问类的静态方法和静态变量,类的静态方法和静态变量是类公用的,不需要实例化也能访问,而对象的方法和属性是每个对象特有的,因此必须先实例化.其他语言如C++,JAVA等 ...

  7. c语言结构体中的冒号的用法

    结构体中常见的冒号的用法是表示位域. 有些信息在存储时,并不需要占用一个完整的字节,   而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1   两种状态,   用一位二进位即可.为了节省 ...

  8. c++中双冒号的作用

    双冒号(::)用法 参考链接:https://segmentfault.com/a/1190000000345680 1.表示“域操作符”例:声明了一个类A,类A里声明了一个成员函数void f(), ...

  9. ::before 和 :after 中双冒号和单冒号有什么区别?

    在 CSS 中伪类一直用 : 表示,如 :hover, :active 等 伪元素在CSS1中已存在,当时语法是用 : 表示,如 :before 和 :after 后来在CSS3中修订,伪元素用 :: ...

随机推荐

  1. Android 如何有效的解决内存泄漏的问题

    前言:最近在研究Handler的知识,其中涉及到一个问题,如何避免Handler带来的内存溢出问题.在网上找了很多资料,有很多都是互相抄的,没有实际的作用. 本文的内存泄漏检测工具是:LeakCana ...

  2. AngularJS HTML DOM& 事件

    AngularJS 为 HTML DOM 元素的属性提供了绑定应用数据的指令. ng-disabled 指令直接绑定应用程序数据到 HTML 的 disabled 属性 <div ng-app= ...

  3. web方式修改svn密码

    原帖:http://www.iusesvn.com/bbs/viewthread.php?tid=20 之前的Apache22Passwd版本有个小bug,用现在的浏览器会显示空白页.这个版本Apac ...

  4. 从零自学Hadoop(19):HBase介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...

  5. 4-安装workpress

    安装wordpress 软件下载 https://cn.wordpress.org/releases/ 在mysql数据库中创建wordpress数据库 mysql> create databa ...

  6. 跳跃的舞者,舞蹈链(Dancing Links)算法——求解精确覆盖问题

    精确覆盖问题的定义:给定一个由0-1组成的矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一个1 例如:如下的矩阵 就包含了这样一个集合(第1.4.5行) 如何利用给定的矩阵求出相应的行的集合 ...

  7. [bzoj1269][AHOI2006文本编辑器editor] (splay模版题 or pb_ds [rope]大法)

    Description 这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器.你能帮助他吗?为了明确任务目标,可可对“文本编辑器”做了一个抽象的定义:   文本:由0个或 ...

  8. linux 项目部署问题

    1.ubuntu 安装 pillow 报错 缺少依赖包 pip install Pillow ValueError: zlib is required unless explicitly disabl ...

  9. 常用linux手头命令

    过滤ip ifconfig eth0|grep -oP "([0-9]{1,3}\.){3}[0-9]{1,3}"|sed -n '1p' ifconfig|sed -n '2p' ...

  10. 框架dubbox的简单使用

    之前: RPC: Remote Produedure Call :一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议 SOA: Service-oriented architect ...