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 23 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
php笔记之:php函数range() round()和list()的使用说明
Apr 26 PHP
YII中assets的使用示例
Jul 31 PHP
一个经典的PHP文件上传类分享
Nov 18 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
PHP如何读取由JavaScript设置的Cookie
Mar 22 PHP
php文件上传及下载附带显示文件及目录功能
Apr 27 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
PHP架构及原理知识点详解
Dec 22 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 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
MySQL相关说明
2007/01/15 PHP
dedecms系统常用术语汇总
2007/04/03 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
Webpack中publicPath路径问题详解
2018/05/03 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
python3.7环境下安装Anaconda的教程图解
2019/09/10 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
建筑工程专业毕业生自荐信
2013/10/19 职场文书
银行会计财务工作个人的自我评价
2013/10/29 职场文书
安全检查管理制度
2014/02/02 职场文书
2014年清明节寄语
2014/04/03 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
银行委托书范本
2014/09/28 职场文书
责任书格式
2015/01/29 职场文书
高二数学教学反思
2016/02/18 职场文书
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android