php中this,self,parent三个关键字的区别
this指向的是类实例化之后的对象
<?php
namespace __1022;
class UserName
{
private $name;
//构造方法
public function __construct($name)
{
$this->name = $name;
}
//实例方法
public function printName()
{
echo $this->name;
}
}
$obj = new UserName('兰妃');
echo $obj->printName();
echo '<hr>';
self指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量。(在类的内部调用静态方法,也要用self)
<?php
namespace __1022;
class Counter
{
private static $firstCount = 0;
private $lastCount;
public function __construct()
{
$this->lastCount = ++self::$firstCount;
}
public function print_lastCount()
{
echo $this->lastCount;
}
}
$obj = new Counter();
echo $obj->print_lastCount();
echo '<hr>';
$obj2 = new Counter();
echo $obj2->print_lastCount();
parent,一般我们使用parent来调用父类的构造函数。
<?php
namespace __1022;
class A
{
public $name;
//构造方法,实例化的时候自动加载
public function __construct($name)
{
$this->name = $name;
}
//实例方法
public function run()
{
return $this->name.'can run very fast';
}
}
//实例化类
$dog = new A('兰妃');
echo $dog->run();
echo '<hr>';
//写一个B类,继承A类
class B extends A
{
//属性
public $sex;
public $age;
//构造方法
public function __construct($sex,$age)
{
parent::__construct('兰溪');//调用A类的构造方法
$this->sex = $sex; //初始化
$this->age = $age;
}
//实例方法
public function eat()
{
return $this->name.'是个'.$this->sex.'孩子,今年才'.$this->age.'岁,但是很能吃,还到处乱拉屎!';
}
}
//实例化
$dog1 = new B('女',0.5);
echo $dog1->eat();

浙公网安备 33010602011771号