重载:
重新加载,当操作对象 的不可访问的成员时,会自动触发一些魔术方法,去处理情况
不可访问:
1.不存在
2.受限于访问修饰限定符
重载属性的默认处理:
1.受限的,就不能处理
2.不存在,自动增加
<?php
class Student{
private $_name;
private $_sn;
private $_gender;
private $_age;
public function __set($p,$v){
//判断属性是佛以_开头,不是,则增加.
if(substr($p,0,1)!='_'){
$p='_'.$p;
}
$allow_set_list=array('_name','_gender','_age');
if(in_array($p,$allow_set_list)){
$this->$p=$v;//可变标志符,可变属性
}
}
}
//批量设置属性值
$s=new Student();
//此处增加代码的容错性
$s->name='杨过';
$s->_gender='男';
var_dump($s);
?>
方法重载
<?php
class Student{
private $_name;
private $_sn;
private $_gender;
private $_age;
public function __set($p,$v){
//判断属性是佛以_开头,不是,则增加.
if(substr($p,0,1)!='_'){
$p='_'.$p;
}
$allow_set_list=array('_name','_gender','_age');
if(in_array($p,$allow_set_list)){
$this->$p=$v;//可变标志符,可变属性
}
}
private $_t;//代表老师对象
public function setT($t){
$this->_t=$t;
}
public function __call($m,$args){
if(method_exists($this->_t,$m)){
return $this->_t->$m();
}else{
echo "hehe";
}
}
}
class teacher{
public function getStudentNumber(){
return 67;
}
}
$s=new Student();
$o=new teacher();
$s->setT($o);
echo $s->getStudentNumber();
?>