在这个问题中,我要求为Laravel提供“最佳实践”建议。
我正在“airbnb-like”网站上列出住宿。 在网站的各种页面(后端和前端)我需要计算住宿的价格。价格是通过将住宿对象与搜索查询结合来计算的。
例如。
-accommodation:4晚
- >结果:每晚
- 搜索查询率=50欧元总价=200欧元
我应该在哪里放,使这些价格计算逻辑?
例如:
- 我应该为此创建一个PricesController吗?
- 我应该添加功能/方法到住宿控制器计算,或住宿模型?
- 我应该为此创建一个ServiceProvider吗?我应该在Laravel中把价格计算逻辑放在哪里?
0
A
回答
1
没有确定的方法来解决这个问题,在我看来这是关于laravel的最伟大的事情。
也许在app/
(app/Caclulations/Accommodation.php
)中创建一个名为Calculations
的目录,并命名空间为?这将是一个很好的面向对象的方法来解决这个问题。
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;
}
}
这样你就可以修改计算类,如果计算的变化,它与其他计算(如基础计算)延伸,也许插入类中的其他一些有用的东西,如货币类型。
用法:
$total = (new Accommodation($rate, $nights))->calculate();
0
实际上你想要在多个控制器中使用这个逻辑。由于这个原因,在多个控制器中重复这个逻辑没有意义。
我会创建一个服务提供者。有了这个,你可以使用dependancy injection
来根据需要使用这个逻辑。通过将这一逻辑放在一个地方,您可以更轻松地维护生活。
0
这取决于你想要得到什么。如果你认为这是一次性计算,即;您不必在此方法之外使用此计算,可以随它一起使用。否则,如果您认为必须在其他控制器/类的外部/外部使用此计算逻辑,则可以将此文件编写为方法,或者可以创建一个保存方法的辅助类。随你便。
相关问题
- 1. 我应该在哪里放置逻辑数据库列计算
- 2. Redux:我应该在哪里放置日期格式化逻辑
- 3. 把UITableViewCell逻辑放在哪里?
- 4. 在Joomla,我应该把我的课程计算在哪里?
- 5. 在哪里把具体的逻辑在laravel应用程序
- 6. 我应该在哪里放置业务逻辑?
- 7. 聚合物2.0:我应该在哪里放置业务逻辑?
- 8. PHP MVC:我应该在哪里放置模型搜索逻辑?
- 9. 我的安全逻辑应该放在哪里?
- 10. 计算逻辑应该放到Rails应用程序中去哪里?
- 11. 把表格数据的逻辑放在哪里
- 12. 我应该在哪里把计算DATAS的流量架构
- 13. 在哪里把业务逻辑在DDD
- 14. 在哪里把商业逻辑放在knockout.js中?
- 15. 在asp.net mvc中把url解析逻辑放在哪里?
- 16. 我在哪里放置ICommand的逻辑?
- 17. 我应该在哪里把JSON数据放在android里
- 18. 我该把registerDefaults放在哪里?
- 19. 我应该在哪里把我的控制器的业务逻辑MVC3
- 20. 把php objectToArray逻辑放在哪里?哪一层?
- 21. 我应该在哪里把我的UpdatePanel
- 22. 我应该在Http_client.Convenience.http_post中把`header`和`data`放在哪里?
- 23. 你在哪里把逻辑的迅速
- 24. 重新选择,我在哪里把计算派生数据逻辑?
- 25. 我应该在Rails中将外部Web服务处理逻辑放在哪里?
- 26. 放入参数。我应该把他们放在哪里?
- 27. 我应该在哪里应该把C#DLL在Metro Style Appc中#
- 28. mvc逻辑设计 - 放哪里?
- 29. 我应该在哪里放置登录功能的应用程序逻辑?
- 30. 我应该把我的NHibernate SchemaExport方法放在哪里?
史蒂夫嗨,这似乎是一个很好的解决方案。我已经创建了一个价格计算类,它接受住宿实例和搜索查询实例。我将这个类绑定到应用程序,并将其命名为''''bookData = App :: make('PriceCalc',[$ accommodation,$ searchData])''' 然后所有的方法都可以用这个 '''bookData-> totalPrice()'''等等。对你来说这看起来不错吗? – SiteHopper
Hi @SiteHopper,看起来很好,但在我看来,并不需要将类绑定到应用程序本身,并在计算类上调用App :: make()方法。如果您知道需要构建它的类和参数,那么您可以使用'$ bookData = new PriceCalc($ accomodation,$ searchData);'自己创建实例。但最终,这完全取决于你!:) –
感谢您的提示。我对将类绑定到应用程序的用法有点困惑。这什么时候适合? – SiteHopper