摘要:<?phpclass Abc{ public $num1=2; public $num2=5; public f
<?php
class Abc
{
public $num1=2;
public $num2=5;
public function sum($m,$n){
echo $m."+".$n.'='.($m+$n);
}
public static function minus($m,$n){
echo $m."-".$n.'='.($m-$n);
}
}
class Def
{
private $num;
public function __get($name){
echo 'get:'.$this->$name;
echo '<br>';
}
public function __set($name,$value){
// return 'set:'.$this->$name=$value;
echo 'set:'.$this->$name=$value;
echo '<br>';
}
public function __isset($name)
{
echo 'isset:'.$this->$name='10';
echo '<br>';
}
public function __unset($name)
{
echo 'unset:yes';
echo '<br>';
}
public function __call($name, $arguments)
{
echo 'call:';
echo call_user_func_array([(new Abc),'sum'],$arguments);
echo '<br>';
}
public static function __callStatic($name, $arguments)
{
echo 'callStatic:';
echo call_user_func_array([(new Abc),'minus'],$arguments);
}
}
$def=new Def();
// isset()的返回值是bool,是否给$name设置了值
isset($def->num);
// get 属性重载
$def->num.'<br>';
// set 属性重载
$def->num=2;
// echo $def->num.'<br>';
// unset 注销属性重载
unset($def->num1);
// 方法重载
$def->sum(30,20);
// 静态方法重载
$def::minus(30,20)
一个模块内部使用这种重载方法能减少很多重复代码,和构造函数有异曲同工之妙。更厉害的是,能够直接操作私有属性。
批改老师:韦小宝批改时间:2018-12-13 16:37:09
老师总结:写的很不错!课后记得多要要练习才可以哦!