public、protected、private权限控制的区别


public
protected
private
当前类


子类

×
外部
×
×

看看一下具体的代码分析:

class Humanity{
	public $name = 'lrfun';
	protected $height = '181cm';
	private $weight = '70kg';
	public function myName(){
		echo '√ 本类调用-姓名:' . $this->name;
	}
	public function myHeight(){
		echo '√ 本类调用-身高:' . $this->height;
	}
	public function myWeight(){
		echo '√ 本类调用-体重:' . $this->weight;
	}
}
// Man继承Humanity
class Man extends Humanity{
	public function myName(){
		echo '√ 子类调用-姓名:' . $this->name;
	}
	public function myHeight(){
		echo '√ 本类调用-身高:' . $this->height;
	}
	public function myWeight(){
		echo '× 本类调用-体重:' . $this->weight;
	}
}
//public
$publicHumanity = new Humanity();
//本类调用 √
$publicHumanity->myName();
//子类调用 √
$publicMan = new Man();
$publicMan->myName();
//外部调用 √
echo '√ 外部调用-姓名:'.$publicHumanity->name;
// 输出结果:
// √ 本类调用-姓名:lrfun
// √ 子类调用-姓名:lrfun
// √ 外部调用-姓名:lrfun

//protected
$protectedHumanity = new Humanity();
//本类调用 √
$protectedHumanity->myHeight();
//子类调用 √
$protectedMan = new Man();
$protectedMan->myHeight();
//外部调用 ×
echo '× 外部调用-姓名:'.$protectedHumanity->height;
// 输出结果:
// √ 本类调用-身高:181cm
// √ 本类调用-身高:181cm
// Fatal error: Cannot access protected property Humanity::$height in .........

//private
$privateHumanity = new Humanity();
//本类调用 √
$privateHumanity->myWeight();
//子类调用 ×
$privateMan = new Man();
$privateMan->myWeight();
//外部调用 ×
echo '× 外部调用-体重:'.$privateHumanity->weight;
// 输出结果:
// √ 本类调用-体重:70kg
// Notice: Undefined property: Man::$weight in .........
// × 本类调用-体重:
// Fatal error: Cannot access private property Humanity::$weight in .........


欢迎转载,原文地址:http://www.lrfun.com/html/technology/PHP/2017/0627/118.html

上一篇:微信支付之Native扫码支付 模式二
下一篇:微信公众平台|模板消息群发功能