范围解析操作符 (::)
范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。
当在类定义之外引用到这些项目时,要使用类名。
自 PHP 5.3.0 起,可以通过变量来引用类,该变量的值不能是关键字(如 self,parent 和 static)。
把 Paamayim Nekudotayim 选作双冒号操作符的名字似乎有些奇怪。然而,这是 Zend 开发小组在写 Zend Engine 0.5(被用于 PHP 3 中)时所作出的决定。事实上这个词在希伯莱文就是双冒号的意思。
Example #1 在类的外部使用 :: 操作符
<?php
class MyClass {const CONST_VALUE = 'A constant value';
}$classname = 'MyClass';
echo $classname::CONST_VALUE; // 自 PHP 5.3.0 起echo MyClass::CONST_VALUE;
?>
self,parent 和 static 这三个特殊的关键字是用于在类定义的内部对其属性或方法进行访问的。
Example #2 在类定义内部使用 ::
<?php
class OtherClass extends MyClass
{public static $my_static = 'static var';public static function doubleColon() {echo parent::CONST_VALUE . "\n";echo self::$my_static . "\n";}
}$classname = 'OtherClass';
echo $classname::doubleColon(); // 自 PHP 5.3.0 起OtherClass::doubleColon();
?>
Example #3 调用父类的方法
<?php
class MyClass
{protected function myFunc() {echo "MyClass::myFunc()\n";}
}class OtherClass extends MyClass
{// 覆盖了父类的定义public function myFunc(){// 但还是可以调用父类中被覆盖的方法parent::myFunc();echo "OtherClass::myFunc()\n";}
}$class = new OtherClass();
$class->myFunc();
?>
范围解析操作符 (::)相关推荐
- php中的解析范围符,PHP 的范围解析操作符 (::) 的含义分析说明
PHP 的范围解析操作符 (::) 的含义分析说明 今天看到几个有关 PHP 的符号一个是 @, 这个加在一个变量的前面, 是为了抑制 PHP 解释器报错, 也就是说即使出了错也不会显示出来 今天看到 ...
- php中的解析范围符,如何合理使用php7范围解析操作符
class Base{ const mynum=1111;//基类常量 public static $num=11;//基类静态成员变量 public $name='base zhangsan';// ...
- php中的解析范围符,PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】...
本文实例讲述了PHP 范围解析操作符(::)用法.分享给大家供大家参考,具体如下: 范围解析操作符 (::) 范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒 ...
- 问题九:C++中::是干嘛用的(域解析操作符)
一两行以上的成员函数最好被定义在类体之外.这要求一个特殊的声明语化来标识一 个函数是一个类的成员:成员函数名必须被它的类名限定修饰(qualified).也就是告诉编译器,这个成员函数在我这类的类域内 ...
- C++基本操作符重载
操作符重载指的是将C++提供的操作符进行重新定义,使之满足我们所需要的一些功能.比如类的加减乘除.我们可以定义类中的某一个成员变量进行加减乘除. 在C++中可以重载的操作符有: + - * / ...
- C++基础11-类和对象之操作符重载1
总结: 1.运算符重载的本质是函数重载 2.运算符重载可分为成员函数重载和全局函数重载(差一个参数) 3.运算符重载函数的参数至少有一个是类对象(或类对象的引用) 4.不可以被重载的操作符有:成员选择 ...
- C++:重载操作符 赋值操作符重载需要注意的问题
一.操作符重载 1.什么是操作符重载 就是把一些操作符通过关键字operator,组装成一个函数,关键字operator后面接需要重载的操作符符号 2.为什么需要重载操作符? (1)简单.方便,比起封 ...
- 10个Java 8 Lambda表达式经典示例
Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表 达式,它将允许我们将行为传到函数里.在J ...
- php面向对象静态常量,浅谈PHP面向对象编程(四、类常量和静态成员)
4.0 类常量和静态成员 通过上几篇博客我们了解到,类在实例化对象时,该对象中的成员只被当前对象所有.如果希望在类中定义的成员被所有实例共享. 此时可以使用类常量或静态成员来实现,接下来将针对类常量和 ...
最新文章
- 在导入graphsurgeon时报错:ImportError: cannot import name ‘NodeDef‘ from ‘tensorflow‘
- 前端:几个操作URL的实用函数
- JS引用类型 -- Array类型
- 深入研究socket编程(3)——使用select函数编写客户端和服务器
- Dubbo下一站:Apache顶级项目
- 显示连接失败_技术丨外接显示器障碍的诊断方法
- Oracle 11g 新特性 – HM(Hang Manager)简介
- iphone怎么查看wifi密码_怎么查看电脑连接的wifi密码?2种方法分享给大家!
- 【面试题】华为20道大数据面试题整理
- Windows快捷键设置
- 华为手机html乱码,华为手机语言设置中文
- 人像姿势,从细节做起!
- 高职单招面试自我介绍稿子计算机专业,单招面试自我介绍稿子范文
- SpringBoot项目启动异常:Field settlementMissService in...Service required a single bean, but 2 were found:
- 基于JavaScript实现的网页版贪吃蛇
- Matplotlib--palette调色板
- 2021河南省高考成绩位次查询,2021年河南高考排名位次查询系统,河南高考排名查询入口...
- 6种常见电流检测电路设计方案
- 学术海报Poster-- 模板分享
- 寻找AR中的Big Difference - v3.0 | AR指南
热门文章
- 中国科学:中科院遗传发育所揭示拟南芥二半萜对根系微生物组的调控机制
- R语言使用ggpubr包的ggarrange函数组合多张结论图(水平并排组合)
- R语言dataframe(data.table)使用用最近的前一个非NA值向前填充缺失值NA实战
- R语言负二项分布函数Negative Binomial Distribution(dnbinom, pnbinom, qnbinom rnbinom )实战
- R语言四格表、列联表秩和检验
- 句法分析语料:哈尔滨工业大学SemEval、清华大学树库
- pandas使用to_dict方法把datafraem保存为字典形式
- 分类模型评估体系:混淆矩阵、PR曲线、F1、Weighted F1、Micro F1、Macro F1、ROCAUC、KS曲线、Lift曲线、GAIN曲线
- 半监督+标签传播算法
- DrugBank数据库