在這個問題中,我要求爲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