[英]How share code between application controllers using Laravel framework?
使用Laravel分發控制器代碼的最佳實踐是什么?
示例:TaskController使用特定請求並使用任務列表訪問特定的模型方法。
OrganisationTaskTreeController使用不同的請求來訪問任務實體上的相同方法,但是還通過與OrganisationController共享的方法獲取OrganisationTree資源。
碼:
class TaskController extends BaseController {
public function getTask(Request $request)
{
$_match = [];
if ($request->has('types'))
{
$_match['type'] = ['$in' => $request->get('types')];
}
if ( ! $request->has('group'))
{
throw new InvalidParameter("Undefined group parameter");
}
....
}
class OrganisationTaskTreeController extends BaseController {
public function getOrganizationTree(Request $request)
{
$_match = [];
$_tree = [];
if ($request->has('types'))
{
$_match['type'] = ['$in' => $request->get('types')];
}
if ( ! $request->has('group'))
{
throw new InvalidParameter("Undefined group parameter");
}
if ($request->has('unti'))
{
$_tree['unit'] = $request->get('unit');
}
....
}
}
如何不重復此代碼?
我認為控制器不應該通過設計擴展,因為使用了許多控制器的方法。 這將是一個過大的殺傷力。
我在考慮:
也許您可以將要重用的代碼重構為兩個類可以擴展的基類上的方法,例如TaskController擴展了BaseController,BaseClass。 然后,您可以在擴展BaseClass的每個類上使用該方法。
您可以將自定義請求對象鍵入到用於特定驗證所需的任何方法中,怎么樣? https://www.laravel.com/docs/5.2/validation#form-request-validation
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.