PHP中parent、this、self和static的区别
2024-09-18 21:25:05
参考:
http://www.cnblogs.com/devcjq/articles/2424738.html
http://www.cnblogs.com/alsf/p/9621002.html
https://blog.csdn.net/xf552527/article/details/81325815
1.PHP之parent解析
parent是指向父类的指针,一般用于调用父类的构造函数来初始化子类,如parent::__construct()
2.PHP之$this解析
$this是指向当前对象(即类的实例化对象)的指针
- $this 指向的是实际调用时的对象,也就是说,实际运行过程中,谁调用了类的属性或方法,$this 指向的就是哪个对象。
- $this 不能访问类的静态属性和常量,且 $this 不能存在于静态方法中,因为静态变量和静态方法是属于类的,而非属于类实例化后的对象。
- 如果要在静态方法中,强制使用类的其他方法,则只能先获取类的实例化对象(new classname()),然后再使用该对象的方法。
- 当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用(通常是该方法所从属的对象)。
3.PHP之self解析
self是指向当前类的指针,而非实例化后的对象指针
- self 和 __CLASS__,都是对当前类的静态引用,取决于定义当前方法所在的类。即self 写在哪个类里面,它引用的就是谁。
- 由于静态变量和静态方法是属于类的,因此可以使用指向当前类的指针self调用。
- self 可以用于访问类的静态属性、静态方法和常量,但 self 指向的是当前定义所在的类,这是 self 的限制
4.PHP之static解析
static是指向当前调用类的指针
- 静态调用时,static 指向的是实际调用时的类;非静态调用时,static 指向的是实际调用时的对象所属的类。
- static 可以用于静态或非静态方法中,也可以访问类的静态属性、静态方法、常量和非静态方法,但不能访问非静态属性。
- static 关键字除了可以声明类的静态成员(属性和方法)外,还有一个非常重要的作用就是后期静态绑定
<?php class Boo { protected static $str = "This is class Boo"; public static function get_info(){ echo get_called_class()."\n";
echo self::$str;
} public static function get_msg(){
echo get_class()."\n";
echo static::$str;
}
} class Foo extends Boo{ protected static $str = "This is class Foo"; } Foo::get_info();
echo "\n";
Foo::get_msg(); ?> //输出结果
Foo
This is class Boo
Boo
This is class Foo
最新文章
- LINQ to SQL语句(15)之String
- Selenium 功能总结大集合
- Request和Response对象
- unity
- Mars的自语重出江湖,祝大家端午节安康
- Javascript输出表格
- locality
- mysql中字符集和校对规则
- windows下配置nodejs+npm
- Android(java)学习笔记69:JDK5之后的Lock锁的概述和使用
- Codeforces Round #313 A Currency System in Geraldion
- 从字符串拼接看JS优化原则
- JSP第五篇【JSTL的介绍、core标签库、fn方法库、fmt标签库】
- 2017总结&;2018展望
- 2D-2D:对极几何 基础矩阵F 本质矩阵E 单应矩阵H
- 通过企业微信API接口发送消息
- Android:困扰了我一个晚上的问题 Failed to resolve: com.android.support:recyclerview-v7.25.3.1
- mysql报错:1130 -host 'localhost' is not allowed to connect to this mysql server
- kali安装搜狗输入法
- Swift5 语言参考(八) 模式
热门文章
- Fiddler如何捕捉DefaultHttpClient的HTTP请求
- NIO相关概念之Selector
- D - Brave Game
- 在浏览器中输入 www.baidu.com 后执行的全部过程
- freemarker 中可以直接使用的内置对象
- ABP之展现层(导航菜单)
- CCPC-Wannafly Winter Camp Day4 G---置置置换【递推】【组合数】【逆元】
- gensim Word2Vec 训练和使用(Model一定要加载到内存中,节省时间!!!)
- 若父设置了overflow: hidden;子如何不受影响
- 2018中国大学生程序设计竞赛 - 网络选拔赛 Dream hdu6440 Dream 给出一个(流氓)构造法