Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 以牺牲效率为代价的SRP?还是使用不当?_Php_Oop_Dry_Single Responsibility Principle - Fatal编程技术网

Php 以牺牲效率为代价的SRP?还是使用不当?

Php 以牺牲效率为代价的SRP?还是使用不当?,php,oop,dry,single-responsibility-principle,Php,Oop,Dry,Single Responsibility Principle,如果我们有2节课 class databaseGateway class format 假设我们通过databaseGateway进行查询,得到5行。 我们希望应用格式并更新数据库中的行 我们可以在一个循环内完成所有这一切 foreach($rows as $entry => $array) { $update['page'] = $format->html($array['page']; $update['id'] = $array['id']; $

如果我们有2节课

class databaseGateway
class format
假设我们通过databaseGateway进行查询,得到5行。 我们希望应用格式并更新数据库中的行

我们可以在一个循环内完成所有这一切

foreach($rows as $entry => $array) {
     $update['page'] = $format->html($array['page'];
     $update['id'] = $array['id'];
     $databaseGateway->update($update);
}
但这是否违背了单一责任原则?根据这个原则,我们是否需要一个循环来格式化行,另一个循环来更新数据库

foreach($rows as $entry => $array) {
    $rows[$entry] = $format->html($array['page']);
}


foreach($rows as $entry => $array) {
    $databaseGateway->update($array);
}
这似乎是对资源的浪费,也是对代码的重复?违背的原则,不要重复自己的原则

处理这个问题的正确专业方法是什么?似乎很普遍


谢谢

我认为,这个问题属于SRP,它并不反对SRP,因为你的级别太低,不符合这个原则,更新需要格式化。这两个动作实际上是同一“服务”的一部分。顺便说一句,在设计类和方法时应用SRP,而不是“for”loopsRP并没有说你不能在一个循环中做多件事。@MikeSW如果forloop在一个方法中,那么这个方法将做两件事,为了更容易理解要点,我省略了过多的代码。然而,低水平似乎是合乎逻辑的,这一点不需要应用原则@Digital Chris关于不在一个循环中做多件事情,我们在一个循环中做的越多,这是否也会导致更紧密的耦合?我猜你可以夸大一切。为什么要格式化内存中的字符串,然后对其执行任何操作?MikeSW是正确的,这两件事是紧密耦合的,因为其他一切都没有任何意义。