一.通过自定义方法访问私有属性
在类外,不能修改和读取类中的私有属性或者受保护的属性,为了到达目的,可以在类中定义一个公共的方法供使用
class Staff{
private $name;
private $salary;
public function setSalary($salary){
$this->salary = $salary;
}
public function getSalary(){
return $this->salary;
}
}
$staff = new Staff();
$staff->setSalary(1000);
echo $staff->getSalary();//输出 1000
上面的这种方式不灵活,如果要设置别的属性,还要再写相应的方法,可以写一个通用的设置属性的方法,如下
class Staff{
private $name;
private $salary;
public function setAttribute($Attribute, $value){
$this->$Attribute = $value;
}
public function getAttribute($Attribute){
return $this->$Attribute;
}
}
$staff = new Staff();
$staff->setAttribute("name", "刘看山");
echo $staff->getAttribute("name");//输出 刘看山
二.通过魔术方法访问私有属性
当访问私有的或者受保护的属性时, __set() __get() 这两个魔术方法会被调用
class Staff{
private $name;
private $salary;
public function __set($Attribute, $value){
$this->$Attribute = $value;
}
public function __get($Attribute){
return $this->$Attribute;
}
}
$staff = new Staff();
$staff->name = "刘看山";
echo $staff->name;//输出 刘看山
本作品采用《CC 协议》,转载必须注明作者和本文链接