PHP的范围解析操作符(::)的含义分析说明
作者:bea
今天看到几个有关PHP的符号。一个是@,这个加在一个变量的前面,是为了抑制PHP解释器报错,也就是说即使出了错也不会显示出来。 还有一个更重要的符号PHP的范围解析操作符(::) 在没有声明任何实例的情况下访问类中的函数或者基类中的函数和变量很有用处。而 :: 运算符即用于此情况。 代码如下: <?php class A { function example() { echo "I am the original function A::example().
今天看到几个有关PHP的符号。一个是@,这个加在一个变量的前面,是为了抑制PHP解释器报错,也就是说即使出了错也不会显示出来。
还有一个更重要的符号PHP的范围解析操作符(::)
在没有声明任何实例的情况下访问类中的函数或者基类中的函数和变量很有用处。而 :: 运算符即用于此情况。
代码如下:
<?php
class A {
function example() {
echo "I am the original function A::example().<br />
";
}
}
class B extends A {
function example() {
echo "I am the redefined function B::example().<br />
";
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
class A {
function example() {
echo "I am the original function A::example().<br />
";
}
}
class B extends A {
function example() {
echo "I am the redefined function B::example().<br />
";
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 array_map()数组函数使用说明
- php array_walk() 数组函数
- 7个超级实用的PHP代码片段
- php函数的常用方法及注意之处小结
- PHP 数据结构 算法描述 冒泡排序 bubble sort
- PHP中获取变量的变量名的一段代码的bug分析
- PHP的一个基础知识 表单提交
- php与mysql建立连接并执行SQL语句的代码
- PHP全概率运算函数(优化版) Webgame开发必备
- php守护进程 加linux命令nohup实现任务每秒执行一次
- ajax 的post方法实例(带循环)
- php高级编程-函数-郑阿奇
- php 日期和时间的处理-郑阿奇(续)
- php 目录与文件处理-郑阿奇(续)
- 第4章 数据处理-php字符串的处理-郑阿奇(续)
- 第4章 数据处理-php数组的处理-郑阿奇
- PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
- PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
- PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php