Initial commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace app\mzl\common\traits;
|
||||
|
||||
/**
|
||||
* 调用服务类的便捷工具
|
||||
*/
|
||||
trait ServiceCallTrait
|
||||
{
|
||||
/**
|
||||
* 实例缓存
|
||||
*/
|
||||
protected array $serviceCache = [];
|
||||
|
||||
/**
|
||||
* 调用指定 Service
|
||||
*
|
||||
* @param string $serviceClass 服务类名(必须继承 BaseService)
|
||||
* @return object
|
||||
*/
|
||||
protected function callService(string $serviceClass): object
|
||||
{
|
||||
if (!isset($this->serviceCache[$serviceClass])) {
|
||||
$this->serviceCache[$serviceClass] = new $serviceClass();
|
||||
}
|
||||
return $this->serviceCache[$serviceClass];
|
||||
}
|
||||
|
||||
/**
|
||||
* 快捷调用某服务下某个方法
|
||||
*
|
||||
* @param string $serviceClass
|
||||
* @param string $method
|
||||
* @param array $args
|
||||
* @return mixed
|
||||
*/
|
||||
protected function callServiceMethod(string $serviceClass, string $method, array $args = []): mixed
|
||||
{
|
||||
$service = $this->callService($serviceClass);
|
||||
|
||||
if (!method_exists($service, $method)) {
|
||||
throw new \BadMethodCallException("Method {$method} does not exist in {$serviceClass}");
|
||||
}
|
||||
|
||||
return call_user_func_array([$service, $method], $args);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user