封装是把一些相关的属性和行为隐藏起来,从而得到保护和安全
封装关键字
public 表示全局,类内部外部子类都可以访问;
protected表示受保护的,只有本类或子类或父类中可以访问;
private表示私有的,只有本类内部可以使用;
|
Public |
Protected |
Private |
|
|
全局 |
√ |
X |
X |
|
继承类 |
√ |
√ |
X |
|
本类 |
√ |
√ |
√ |
class MyPc{
public $name; //全局属性,任何位置都可以引用
protected $price; //保护属性,只有本类或子类或父类中可以访问
private function vod() { //私有属性,只有本类内部可以使用;
$this->name;
}
……
}
封装相关函数:__set() , __get()
某些特定操作的时候需要访问和赋值封装的类型,这个时候我们就需要其他的函数帮我们完成这些操作,PHP为我们提供了个方法名:__set() , __get()
__set() 取得当前类中封装过私有属性或者方法重新执行或赋值操作
__set($Name,$Value)
__get() 取得当前类中封装过属性或方法并转换成共有属性
__get()
例:
class MyPc{
private $name;
function __construct($name=""){
return $this->name=$name;
}
function __get($name){
return $this->name."====";
}
function __set($n,$v){
if($v>=222){
$this->$n = $v;
}
}
private function power(){
return $this->name."power...";
}
function ok(){
return $this->power()."ok";
}
}
$pc1 = new MyPc("my pc");
$pc1->name="55";
echo $pc1->name."<br>";
echo $pc1->ok();