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代码 用PHP写出自己的BLOG系统
Apr 12 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
递归删除一个节点以及该节点下的所有节点示例
Mar 19 PHP
ThinkPHP实现动态包含文件的方法
Nov 29 PHP
php进行支付宝开发中return_url和notify_url的区别分析
Dec 22 PHP
php中使用session防止用户非法登录后台的方法
Jan 27 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 PHP
PHP使用ajax的post方式下载excel文件简单示例
Aug 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
php 判断服务器操作系统的类型
2014/02/17 PHP
php文件上传简单实现方法
2015/01/24 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
js实现表格数据搜索
2020/08/09 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
Python中扩展包的安装方法详解
2017/06/14 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
阿迪达斯西班牙官方网站:adidas西班牙
2016/07/21 全球购物
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
电子商务专业推荐信范文
2013/12/02 职场文书
实习单位接收函
2014/01/11 职场文书
海南地接欢迎词
2014/01/14 职场文书
高三政治教学反思
2014/02/06 职场文书
四风存在的原因分析
2014/02/11 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
小爸爸观后感
2015/06/15 职场文书
独生子女证明范本
2015/06/19 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers