Php 组合函数的好处
我有四种方法可以改变输入并返回输出Php 组合函数的好处,php,oop,composition,single-responsibility-principle,Php,Oop,Composition,Single Responsibility Principle,我有四种方法可以改变输入并返回输出 class edit { function a($input) { return $input + 4; } function b($input) { return $input - 2; } function c($input) { return $input * 10; } function d($input) { return $input / 8; } } 巧合的是,这些方法需要一个接一个地调用,并将上一个方法返回
class edit
{
function a($input) { return $input + 4; }
function b($input) { return $input - 2; }
function c($input) { return $input * 10; }
function d($input) { return $input / 8; }
}
巧合的是,这些方法需要一个接一个地调用,并将上一个方法返回的输出作为下一个方法的输入
我们可以用多种方式处理这个过程
$handle = new edit();
$output = $handle->a(8);
$output = $handle->b($output);
$output = $handle->c($output);
$output = $handle->d($output);
或
在类中创建另一个方法来处理整个过程
function all($input)
{
$output = $this->a($input);
$output = $this->b($output);
$output = $this->c($output);
$output = $this->d($output);
return $output;
}
$handle = new edit(8);
$handle->all();
这两者都完成了相同的任务
然而,我最近学习了合成函数,它非常适合我需要实现的功能
注意:对于这里的示例,我已将方法a、b、c、d从类中移出,并将它们作为过程域中的函数调用,我无法使此合成函数OOP友好,请原谅
function compose($f,$g,$h,$i)
{
return function($x) use ($f, $g, $h, $i) { return $f($g($h($i($x)))); };
}
$comp = compose('a', 'b','c','d');
$result = $comp(8);
说到这里,我想知道使用合成函数实现此任务的好处是什么
我只能注意到最小的改进,因为我们不需要将输入传递四次,只传递一次
在我最近的研究中,我遇到过许多软件工程师谈论函数式编程是多么伟大
我觉得我错过了什么?还是我提到的唯一改进
PS-我使用的语言是PHP,我在这里给出的方法/函数只是简单的例子来说明这一点。我也在努力坚持坚实的原则
谢谢