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下读取文本文件的代码
Jul 02 PHP
Zend的MVC机制使用分析(一)
May 02 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
Mar 04 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 PHP
php对xml文件的增删改查操作实现方法分析
May 19 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 09 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
php用wangeditor3实现图片上传功能
Aug 22 PHP
laravel 关联关系遍历数组的例子
Oct 10 PHP
浅谈php常用的7大框架的优缺点
Jul 20 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
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
jquery 插件开发方法小结
2009/10/23 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
angular2使用简单介绍
2016/03/01 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
vue+element实现批量删除功能的示例
2018/02/28 Javascript
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
python中用ctypes模拟点击的实例讲解
2020/11/26 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
学生党支部先进事迹
2014/02/04 职场文书
开学典礼策划方案
2014/05/28 职场文书
大学生就业求职信
2014/06/12 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
销售员岗位职责
2015/02/10 职场文书
班主任自我评价范文
2015/03/11 职场文书
疾病证明书
2015/06/19 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
Vue实现导入Excel功能步骤详解
2021/07/03 Vue.js
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android
Redis keys命令的具体使用
2022/06/05 Redis
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS