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 相关文章推荐
用PHP实现小型站点广告管理
Oct 09 PHP
php Memcache 中实现消息队列
Nov 24 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
使用PHP会话(Session)实现用户登陆功能
Jun 29 PHP
从PHP的源码中深入了解stdClass类
Apr 18 PHP
php购物车实现方法
Jan 03 PHP
基础的WordPress插件制作教程
Nov 24 PHP
手把手编写PHP框架 深入了解MVC运行流程
Sep 19 PHP
Laravel中log无法写入问题的解决
Jun 17 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 PHP
php-fpm添加service服务的例子
Apr 27 PHP
php探针不显示内存解决方法
Sep 17 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 Class 文章
2007/04/04 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
javascript两段代码,两个小技巧
2010/02/04 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
浅析Python数据处理
2018/05/02 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
python导入坐标点的具体操作
2019/05/10 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
EJB3推出JPA的原因
2013/10/16 面试题
2015年创先争优活动总结
2015/03/27 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS