【问题标题】:Propel - best practice for implementing a method - shall I save the object inside or outside the methodPropel - 实现方法的最佳实践 - 我应该将对象保存在方法内部还是外部
【发布时间】:2010-10-01 09:52:28
【问题描述】:

我正在使用 Propel,一个 PHP ORM。

我真的很喜欢。 我喜欢能够编写这段代码:

$offer->setTitle('20% off everything')->save();

但是如果我想创建一个 increaseImpressions 方法呢?

你会这样使用吗:

$offer->increaseImpressions()

或者像这样:

$offer->increaseImpressions()->save()

?

换句话说,你会将对象保存在 increaseImpressions 方法的内部还是外部? 你能告诉我为什么吗?

我猜这是一个关于 OOP 的问题。

谢谢, 丹

【问题讨论】:

    标签: oop propel


    【解决方案1】:

    我建议第二个例子:

    $offer->increaseImpressions()->save()
    

    本质上,increaseImpressions 方法只是另一个设置器。在 increaseImpressions 方法之外调用 save 使其与其余的 setter 方法保持一致。

    【讨论】:

    • 我也比较喜欢这种风格,因为可以组合多个操作,只保存一次到数据库,像这样:$offer->increaseImpressions(); [some other code] $offer->setName('Bananas!'); [some other code] $offer->save();
    • 此外,这将防止意外:如果您执行$offer->setName('Bananas!'),然后执行$offer->increaseImpressions(),但最终决定不保存它(无论出于何种原因),该名称仍将在数据库中被覆盖。
    【解决方案2】:

    对于像记录印象这样重要的事情,使操作原子化并将保存放在方法中可能是有意义的。您是否与任何您尊重的开发人员合作,您可以征求他们的建议?

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多