首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该把价格计算逻辑放在哪里呢?

我应该把价格计算逻辑放在哪里呢?
EN

Stack Overflow用户
提问于 2015-11-13 19:52:35
回答 3查看 1.7K关注 0票数 0

在这个问题中,我向Laravel寻求“最佳实践”的建议。

我正在一个类似airbnb的网站上工作,在那里我列出了住宿情况。在网站的不同页面(后端和前端),我需要计算住宿的价格。价格是通过合并住宿对象和搜索查询来计算的。

例如:

-accommodation:利率=每晚50欧元

-search查询:4个晚上

->结果:总价= 200欧元

我应该把这些价格计算的逻辑放在哪里呢?

例如:

-Should,我为此创建了一个PricesController?

-Should --我给计算这个的AccommodationsController添加函数/方法,还是向容纳模型添加函数/方法?

-Should,我为此创建了一个ServiceProvider?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-13 21:02:51

没有明确的方法来实现这一点,在我看来,这是拉拉最伟大的事情。

也许在app/ (app/Caclulations/Accommodation.php)中创建一个名为app/Caclulations/Accommodation.php的目录,并将其命名空间命名空间为?这将是一个很好的面向对象的方法来解决这个问题。

代码语言:javascript
复制
namespace App\Calculations;

class Accommodation
{
    /**
     * The rate per night.
     *
     * @var float
     */
    protected $rate;

    /**
     * The amount of nights for the stay.
     *
     * @var int
     */
    protected $nights = 1;

    /**
     * Constructor.
     *
     * @param float $rate
     * @param int   $nights
     */
    public function __construct($rate = 50.00, $nights = 1)
    {
        $this->rate = $rate;
        $this->nights = $nights;
    }

    /**
     * Calculates the accommodation and returns the result.
     *
     * @return float
     */
    public function calculate()
    {
        return $this->rate * $this->nights;
    }
}

通过这种方式,您可以在计算发生更改时修改计算类,从其他计算(例如基本计算)中扩展计算类,并可能在类中插入其他有用的内容,例如货币类型。

用法:

代码语言:javascript
复制
$total = (new Accommodation($rate, $nights))->calculate();
票数 1
EN

Stack Overflow用户

发布于 2015-11-13 20:10:46

实际上,您需要在多个控制器中使用这种逻辑。因此,没有必要在多个控制器中重复此逻辑。

我会创建一个服务提供商。这样,您就可以在任何需要的地方使用dependancy injection来使用这个逻辑。通过将这一逻辑放在一个地方,您可以更容易地维护&更容易的生活。

票数 0
EN

Stack Overflow用户

发布于 2015-11-13 20:30:29

这取决于你想得到什么。如果你认为这是一次计算,也就是说,你不需要在这个方法之外使用这个计算,那么它是可以的。否则,如果您认为必须在外部/在其他控制器/类中使用此计算逻辑,则可以将此文件编写为方法,或者创建一个包含您的方法的助手类。由你决定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33700754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档