关于php中数据访问的几点补充
2015-07-11 17:48
621 查看
前几篇文章说了,parent、self、static关键字的使用,parent可以访问父类的静态方法和静态变量,self和static可以访问本类的静态成员等等,但实际上他们还有其他作用,来看一下:
先看parent关键字,它除了可以访问父类中的静态方法之外,它还可以用来访问被重写了的父类中的方法,比如方法moreTesting已经在类ChildClass中被重写,那么我偏偏需要访问父类中没被重写的方法怎么办,就用parent关键字
再来看self关键字,他除了可以访问本类中的静态成员之外,还可以用来访问本类中的方法,就是说一般的方法也可以访问,功能和$this->called();相同,但是注意不能用来访问本类的成员属性,也就是不能访问一般的变量,非静态变量只能用$this来访问,还有一点const用来定义常量,和define()方法差不多,常量一般用大写字母,并且不需要加$符号,常量一旦赋值将无法进行改变,代码中用self::CONST_VALUE来访问常量
最后是static关键字,她没有其他特殊的功能,和前面一样只能访问自身类中的静态成员
看来self关键字的功能要多于static关键字
class BaseClass { public function test() { echo "BaseClass::test() called"; } public function moreTesting() { echo "BaseClass::moreTesting() called"; } } class ChildClass extends BaseClass { private static $sValue = "static value"; const CONST_VALUE = 'A constant value'; public function moreTesting() { echo "ChildClass::moreTesting() called"; parent::moreTesting(); self::called(); echo "CONST_VALUE: " . self::CONST_VALUE; echo "sValue: " . static::$sValue; } public function called(){ echo "ChildClass::called() called"; } }
先看parent关键字,它除了可以访问父类中的静态方法之外,它还可以用来访问被重写了的父类中的方法,比如方法moreTesting已经在类ChildClass中被重写,那么我偏偏需要访问父类中没被重写的方法怎么办,就用parent关键字
再来看self关键字,他除了可以访问本类中的静态成员之外,还可以用来访问本类中的方法,就是说一般的方法也可以访问,功能和$this->called();相同,但是注意不能用来访问本类的成员属性,也就是不能访问一般的变量,非静态变量只能用$this来访问,还有一点const用来定义常量,和define()方法差不多,常量一般用大写字母,并且不需要加$符号,常量一旦赋值将无法进行改变,代码中用self::CONST_VALUE来访问常量
最后是static关键字,她没有其他特殊的功能,和前面一样只能访问自身类中的静态成员
看来self关键字的功能要多于static关键字
相关文章推荐
- php生成验证码图片
- php上传文件
- php中重写和final关键字的使用
- php中常用的几个魔法常量
- 一个php函数,能够遍历一个文件夹下的所有文件和子文件夹
- Yii1.1 Active Record 查询结果转化成数组
- php扩展库
- PHP 文件创建/写入
- php动态链接扩展库
- php扩展模块安装
- PHP:快速排序法
- php 文件操作
- win7计划任务定时执行PHP脚本设置图解
- LAMP里php.ini配置文件详解
- PHP流程控制中不常用的替代语法
- php中curl扩展学习
- php 3种基本设计模式的组合使用
- (转)使用UTL_SMTP包发送邮件
- PHP:插入排序法
- PHP学习笔记之使用GD库制作验证码(一)