总结self, parent的用法

本文介绍了PHP中如何使用self和parent关键字来自引用当前类及父类的静态属性和方法,并对比了$this与parent的不同应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  •   self: 本类(是类 不是对象)
  •   parent: 父类
 <?php
 
 
/***
====笔记部分====
在引入自身的静态属性/静态方法
以及父类的方法时,可以用到.
 
用法:
self::$staticProperty
self::staticMothed;
parent::$staticProperty
parent::Mothed;
***/
/*
class Human {
    static public $head = 1;
 
    public function say() {
        echo Human::$head,'<br />';
    }
}
 
 
echo Human::$head,'<br />'; // 1
 
$lisi = new Human();
$lisi->say(); //
*/
// 某一天,类名要统一,规范化. Human不叫Human了,叫cHuman
// 导致类内部,凡引用到自身类名的也要改
 
 
class cHuman {
    static public $head = 1;
 
    public function say() {
        echo self::$head,'<br />';
    }
 
 
}
 
echo cHuman::$head,'<br />'; // 1
 
$lisi = new cHuman();
$lisi->say(); //
 
 
 
class Stu extends cHuman {
    static public $head = 2;
 
    public function say() {
        echo self::$head,'<br />';
        echo '父类只有',parent::$head,'<br />';
    }
 
}
 
$ming = new Stu();
$ming->say(); 
 
 
// ========一位同学的疑问,$this,还用parent====//
class a{
    public function a1(){
    echo 'this is class function a1()';
    }
 
}
class b extends a{
    public function b1(){
        $this->a1();
    }
 
    public function b2(){
        parent::a1();
    }
}
 
$b = new b();
$b->b1();
$b->b2();
 
/*
上面2个调用,显示效果一样的,
如果从速度角度看,理论上parent::稍快一点点.
因为在子类寻找a1方法,寻找不到,再去其父类寻找.
 
但是从面向角度看,继承过来的,就是自己的.
$this 更符合面向的思想.
 
举一个反例
class a {
}
 
class b extends a {
}
 
class c extends b {
}
...
...
 
class f extends e {
    parent::parent::parent::
    总不能这么写吧?
}
没意义。。。
*/
?>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值