C层 继承 BaseController:
/**
* 实际业务
* Eleven :datetime
* @param Request $request
* @return void
*/
public function cronIncludeProject(Request $request)
{
$date = $request->param('date', date('Y-m-d', strtotime('-1 day')));
$this->hundleLogic(function() use ($date) {
$logic = new \app\logic\ProjectLogic();
return $logic->summaryResourceProject($date);
});
}
BaseController 中闭包封装方法: $this->hundleLogic
/**
* 通过闭包方式logic,统一输出crontab
* @author Eleven
* @date :datetime
*/
public function hundleLogic($func)
{
$start = microtime(true);
try {
$result = $func();
$duration_time = round(microtime(true) - $start, 4);
//输出结果记录日志Logic中
\app\logic\MonitorTaskLogLogic::SetLog($result['code'], $result['message'],
\app\model\MonitorTask::PLATFORM_DC,
$duration_time
);
} catch (\Exception $e) {
$this->recordException($e);
throw $e;
die;
}
}
整体封装闭包输出方式关键流程 随手记录~