面向对象的封装特性
Private Class star{
public $name;
private $age;
private $weight;
//构造函数,在类被实例化之后,第一个被自动执行的方法,不需要人工进行手动调用
function __struct($name,$age,$weight){
$this->name=$name;
$this->age=$age;
$this->weight=$weight;
}
//当对象访问类的私有属性时,系统会自动调用
private function __get($varName){
return $this->$varName;
}
//当对象访问类的私有属性,并为私有属性赋值时,系统会自动调用
private function __set($varName,$strValue){
return $this->$varName=$strValue;
}
//当对象 访问类的私有属性,并使用isset()函数判断对象的私有属性是否存在时,系统自动调用__isset()
private function __isset($strName){
return isset($this->$strName);
}
//当对象访问类的私有属性,并使用unset()函数销毁对象的私有属性的时候,系统自动调用__unset()魔术方法
private function __unset($strName){
unset($this->$strName);//unset($var)销毁变量时没有返回值
}
}
$star=new star;
echo $star->name; //访问对象的公共属性,可以直接访问
$star->="李小龙"; //可以访问对象的公共属性,并赋值
isset($star->name); //可以在类的外部直接使用isset()函数判断类的公共属性是否存在
unset($star->name); //可以再类的外部直接使用unset()函数来对对象的公共属性进行销毁
/////////////关于私有属性的操作///////////////
//不能在类的外部直接访问类的私有属性
echo $star->age; //return error
//不能再类的外部直接访问类的私有属性,并为其赋值
$star->age="30";//return error
//不能在类的外部直接判断对象的私有属性是否存在
echo isset($star->weight); //return error
//不能在类的外部直接销毁类的私有属性
unset($star->weight); //return error
//////////////////系统自动调用类的魔术方法访问私有属性,并对私有属性进行操作//////////////////////////
//对象访问类的私有属性,系统自动调用__get()魔术方法
echo $star->age;
//对象访问类的私有属性,并为该私有属性赋值,系统自动调用__set()魔术方法
$star->weight="65kg";
//对象访问类的私有属性,并使用isset()函数判断该私有属性是否存在,系统自动调用__isset()魔术方法
isset($star->age);
//对象访问类的私有属性,并使用unset()函数销毁该私有属性时,系统自动调用__unset()魔术方法
unset($star->weight);