[英]How can I reuse Laravel 5 Collection Filters?
我有一個用於對模型進行排序的自定義集合sortBy函數。 問題是,每次要排序時,我都會復制並粘貼此過濾器代碼。 看起來這一定超出了最佳實踐,因為復制和粘貼代碼以供重用是不行的。 處理此問題的最佳做法是什么?
例如,對於基於可重用的查詢的排序和類似的東西,我們有雄辯的范圍,但對於沿同一方向的集合則沒有。
聲明一個“幫助程序”功能(請參閱Laravel的幫助程序,將其放置在何處以及如何自動加載),並在需要排序的地方使用它,如下所示:
排序功能:
function mySortHelper($a, $b) {
// ... sorting code goes here ...
}
當您需要使用它時:
$collection->sortBy("myHelperFunction");
編輯: 添加一個輔助函數
這是我在應用程序中完成此操作的方式。
在app
目錄中,創建一個名為Helpers
的文件夾。
在Helpers
目錄中,創建一個名為(例如) Sorting.php
的新PHP文件。
在這個新文件中,如下創建函數:
if ( ! function_exists('mySortHelper'))
{
function mySortHelper($a, $b)
{
return $a<$b ? -1 : 1;
}
}
該代碼是從Laravel框架幫助程序文件(位於vendor/laravel/framework/src/Illuminate/Foundation/helpers.php
)復制的(帶有更改)。
然后剩下的唯一就是自動加載了。 使用以下命令更新您的composer.json
文件:
"autoload": {
"files": [
...
"app/Helpers/Sorting.php",
...
]
},
在composer.json
的autoload
部分中可能還有其他部分,或者在files
下列出了其他內容。 只需將創建的文件添加到composer.json
該部分,然后運行composer dump-autoload
進行更新即可。 現在,您的助手功能將在整個Laravel應用程序中可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.