$this是指向对象的指针,self是指向当前类的指针。
来一个案例
class ClassName{
public $abc1="123";//成员属性
public static $abc2="456";//静态属性
const abc3="789";//常量
public function showABC(){//成员方法
echo $this->abc1;
echo self::$abc2;
echo self::abc3;
}
}
$New_obj=new ClassName;
$New_obj->showABC();
输出:123456789
$this只能在成员方法中使用。self既可以在成员方法中使用,也可以在静态方法中使用,用来调用类的常量、静态属性和方法。
class ClassName{
public $abc1="123";//成员属性
public static $abc2="456";//静态属性
const abc3="789";//常量
public static function showABC(){//静态方法
echo $this->abc1;
}
}
$New_obj=new ClassName;
$New_obj->showABC();
输出:Uncaught Error: Using $this when not in object context
若在静态方法中调用$this关键字,PHP将会报错。