优化前
class Parse
{
public function run()
{
$this->func1($data);
$this->func2($data);
...
}
public function func1()
{
}
public function func2()
{
}
}
优化后
# Support.php
trait Support
{
/**
* 处理器
* 该方法依赖 `kernel` 属性
*/
public function processor()
{
foreach ($this->kernel as $func) {
try {
method_exists($this, $func) && call_user_func_array([$this, $func], func_get_args());
} catch (Exception $e) {
app('log')->error($e);
continue;
}
}
}
}
# Parse.php
class Parse
{
use Support;
protected $kernel = [
'func1',
'func2',
];
public function run()
{
$this->processor($data);
}
public function func1()
{
//todo...
}
public function func2()
{
//todo...
}
}
优点
-
run
方法就变得很简洁,不用写一堆方法调用。 - 方法调用统一
catch
,这样就算有方法抛出异常,也不影响后面方法执行。
网友评论