一段低版本 Facades
<?php
namespace App\Foundation\Facades;
abstract class BaseFacades
{
/**
* 你要具体调用的实例
*
* @return mixed 一个实例
*/
abstract public function make();
/**
* Handle dynamic method calls into the model.
*
* @param string $method
* @param array $parameters
* @return mixed
*/
public function __call($method, $parameters)
{
$instance = $this->make();
// return $this->make()->$method(...$parameter); // 如果你的 php 版本比较高,推荐使用这个
return call_user_func_array([$instance, $method], $parameters);
}
/**
* Handle dynamic static method calls into the method.
*
* @param string $method
* @param array $parameters
* @return mixed
*/
public static function __callStatic($method, $parameters)
{
$instance = new static;
// return (new static)->$method(...$parameter); // 如果你的 php 版本比较高,推荐使用这个
return call_user_func_array([$instance, $method], $parameters);
}
}
使用
<?php
namespace App\Facades;
use App\Foundation\Facades\BaseFacades;
use App\Service\UserService;
class User extends BaseFacades
{
public function make()
{
return new UserService();
}
}
<?php
namespace App\Service;
class UserService
{
public function all()
{
return 'User collection';
}
}
<?php
namespace App\Controllers;
use App\Facades\User;
class UserController
{
public function example()
{
return User::all();
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接