你需要自行实现一个Facade对象,把所有的方法调用代理到真实的对象。
```
class UserFacade
{
private $user;
public function __constructor()
{
$this->user = new User();
}
public function __callStatic($name, $arguments)
{
return call_user_func_array(array($this, $name), $arguments);
}
}
```
```
$user UserFacade::get();
```
任何对UserFacade的静态方法调用都会代理到User。`__callStatic`在有静态调用的时候触发,传入的参数$name是`UserFacade::get`静态调用的方法名,$arguments是参数的数组。
Laravel官方描述Facade是简洁的、容易记忆的类调用,Laravel的特性基本都提供Facade类。在业务开发这个层面,我不推荐静态类调用的设计方式,这个我另外开个帖子讨论。
参考
- https://laravel.com/docs/5.4/facades
- http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
- http://php.net/manual/en/function.call-user-func-array.php