<?php
/**
* 事件委托:请求委托 访问类中不存在的成员方法时,会被 魔术方法拦截,把请求重写到别的类的成员方法来处理
* 委托是指一个对象转发或者委托一个请求给另一个对象,被委托的一方替原先对象处理请求
* 委托比继承更加灵活,父类与子类的关系是固定的,只能单继承,但是请求可以委托给多个对象
*/
// 被委托的类
class Base{
public function write(...$args)
{
printf('调用的不存在方法%s(),参数列表有[% s]<br>',__METHOD__,implode(',',$args));
}
}
class Work
{
protected $Base;
public function __construct(Base $Base)
{
$this->Base = $Base;
}
public function __call($method, $arg)
{
$this->Base->$method(...$arg);
}
}
$base = new Base;
$work = new Work($base);
$work->write(1,2.3,4);
?>