PHP的范围解析操作符(::)的含义分析说明


Posted in PHP onJuly 03, 2011

今天看到几个有关PHP的符号。一个是@,这个加在一个变量的前面,是为了抑制PHP解释器报错,也就是说即使出了错也不会显示出来。
还有一个更重要的符号PHP的范围解析操作符(::)
在没有声明任何实例的情况下访问类中的函数或者基类中的函数和变量很有用处。而 :: 运算符即用于此情况。

<?php 
class A { 
function example() { 
echo "I am the original function A::example().<br />\n"; 
} 
} 
class B extends A { 
function example() { 
echo "I am the redefined function B::example().<br />\n"; 
A::example(); 
} 
} 
// A 类没有对象,这将输出 
// I am the original function A::example().<br /> 
A::example(); 
// 建立一个 B 类的对象 
$b = new B; 
// 这将输出 
// I am the redefined function B::example().<br /> 
// I am the original function A::example().<br /> 
$b->example(); 
?>

上面的例子调用了 A 类的函数 example(),但是这里并不存在 A 类的对象,因此不能这样用 $a->example() 或者类似的方法调用 example()。反而我们将 example() 作为一个类函数来调用,也就是说,作为一个类自身的函数来调用,而不是这个类的任何对象。
这里有类函数,但没有类的变量。实际上,在调用函数时完全没有任何对象。因而一个类的函数可以不使用任何对象(但可以使用局部或者全局变量),并且可以根本不使用 $this 变量。
上面的例子中,类 B 重新定义了函数 example()。A 类中原始定义的函数 example() 将被屏蔽并且不再生效,除非使用 :: 运算符来访问 A 类中的 example() 函数。如:A::example()(实际上,应该写为 parent::example(),下一章介绍该内容)。
就此而论,对于当前对象,它可能有对象变量。因此可以在对象函数的内部使用 $this 和对象变量。
PHP 相关文章推荐
杏林同学录(六)
Oct 09 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
Oct 29 PHP
使用PHP编写的SVN类
Jul 18 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
thinkPHP自动验证机制详解
Dec 05 PHP
ThinkPHP实现分页功能
Apr 28 PHP
php简单构造json多维数组的方法示例
Jun 08 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 #PHP
PHP array_multisort()函数的使用札记
Jul 03 #PHP
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 #PHP
PHP include_path设置技巧分享
Jul 03 #PHP
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 #PHP
php header Content-Type类型小结
Jul 03 #PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 #PHP
You might like
PHP里的中文变量说明
2011/07/23 PHP
实现获取http内容的php函数分享
2014/02/16 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
python调用其他文件函数或类的示例
2019/07/16 Python
在django view中给form传入参数的例子
2019/07/19 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
Django多数据库联用实现方法解析
2020/11/12 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
幼师专业毕业生自荐信
2013/09/29 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL