总结:self,parent的用法
self: 本类(不要理解成本对象)
parent: 父类
在引入自身的静态属性/静态方法,以及父类的方法时,可以用到
用法:
self::$staticPropertyself::$staticMothedparent::$staticPropertyparent::Mothed
<?php
/*
class Human{
static public $head = 1;
public function say(){
echo Human::$head,'<br />';
}
}
echo Human::$head,'<br />';
$lisi = new Human();
$lisi->say();
*/
//某一天,类名要统一,规范化,Human不叫Human了,叫cHuman
//导致类内部,凡引用到自身类名的也要改
class cHuman{
static public $head = 1;
public function say(){
echo self::$head,'<br />';
}
public function show(){
echo "hello",'<br />';
}
}
echo cHuman::$head,'<br />';
$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();
echo "=====\$this还是parent::==<br>";
class a{
public function a1(){
echo "this is calss function al<br>";
}
}
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 d{
parent::parent::...
}
*/