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

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

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

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

<?php
class Fruit {
const CONST_VALUE = 'Fruit Color';
} $classname = 'Fruit';
echo $classname::CONST_VALUE; // As of PHP 5.3.0 echo Fruit::CONST_VALUE;
?>

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

<?php
class Fruit {
const CONST_VALUE = 'Fruit Color';
} class Apple extends Fruit
{
public static $color = 'Red'; public static function doubleColon() {
echo parent::CONST_VALUE . "\n";
echo self::$color . "\n";
}
} Apple::doubleColon();
?>

程序运行结果:

Fruit Color Red

Program List:调用parent方法

<?php
class Fruit
{
protected function showColor() {
echo "Fruit::showColor()\n";
}
} class Apple extends Fruit
{
// Override parent's definition
public function showColor()
{
// But still call the parent function
parent::showColor();
echo "Apple::showColor()\n";
}
} $apple = new Apple();
$apple->showColor();
?>

程序运行结果:

Fruit::showColor()
Apple::showColor()

Program List:使用作用域限定符

<?php
class Apple
{
public function showColor()
{
return $this->color;
}
} class Banana
{
public $color; public function __construct()
{
$this->color = "Banana is yellow";
} public function GetColor()
{
return Apple::showColor();
}
} $banana = new Banana;
echo $banana->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();
// output is "show color"! ?>

程序运行结果:

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. iOS 设置UILabel的行间距并自适应高度

    NSString *contentStr = @"总以为,在最初的地方,有一个最原来的我,就也会有一个最原来的你"; UILabel *tempLabel = [[UILabel ...

  2. Ionic设置ion-slide-box不启用(不通过$ionicSlideBoxDelegate)

    猛地一看这个标题,可能觉得多此一举,直接$ionicSlideBoxDelegate. $getByHandle(handle). enableSlide(false)设置不就行了?是的,按理说就是这 ...

  3. ios native工程集成react-native的demo

    react-native看到了给现有工程添加react-native环境的时候碰到一个问题: 如何往工程中添加 package.json文件,以及node_modules是怎么来的? 我开始的时候以为 ...

  4. Android中隐藏顶部状态栏的那些坑——Android开发之路3

    Android中隐藏顶部状态栏的那些坑 先看看常规的隐藏状态栏的方法: 方法一: @Override protected void onCreate(Bundle savedInstanceState ...

  5. Flash Professional 报错 TypeError: Error #1034: 强制转换类型失败:无法将 xxxx@zzzz 转换为 yyy

    通常是因为xxx yyy 两个不同链接名的元件 使用了同一个属性名

  6. 机器学习实战笔记(Python实现)-04-Logistic回归

    --------------------------------------------------------------------------------------- 本系列文章为<机器 ...

  7. 腾讯云CentOS系统配置apache和tomcat

    本文使用yum软件包管理工具基于CentOS7.2版本配置apache和tom. 云服务器选购完毕后,安装Xshell软件,输入用户名密码即可远程登陆登录(centos用户名默认是root). 1,下 ...

  8. CentOS7 配置LAMP

    这两天要带新同事.没办法,只有现学现卖,又回到Linux的怀抱了.今晚想配置一下LAMP环境,但是之前用的6.6,今晚想闷声做大死,用一次7试试.网上找了很多教程,但是好像转载的都不负责任,有些到下一 ...

  9. Python学习进程

    1周第1天 主要是变量的学习(11月8日) 1.1 python安装(win和linux下)1.2 ipython安装及使用1.3 变量的定义1.4 变量赋值1.5 运算符(赋值.算术.关系.逻辑)1 ...

  10. sql2008“备份集中的数据库备份与现有的xx数据库不同”解决方法

    http://www.cnblogs.com/huangfr/archive/2012/08/09/2629687.html 因为是在另一台电脑对同名数据库做的备份,用常规方法还原,提示不是相同数据库 ...