如何處理create()
中的許多重複參數。我喜歡看起來整潔和可讀。如何處理重複的參數?
例如在控制器中,我們有addList
()方法,它有許多參數。
public function addList(CreateListRequest $request)
{
$created = $this->list->create(
$request->user(),
$request->name,
$request->subject,
$request->description,
$request->location,
$request->do_email,
$request->provider,
$request->something1,
$request->something2,
);
}
在List
類,我們有一個創建方法也很多重複性的許多參數。並在$this->api->create()
和$this->listRepository->create()
這也是有點重複。有沒有辦法清理這個或重構這個?
class List
{
public function create($user, $name, $subject, $description, $location, $doEmail, $provider, $something, $something2)
{
$list = $this->api->create($name, $subject, $description, $location);
if ($list->status == "success") {
// Add to database
$row = $this->listRepository->create($user->id, $name, $subject, $description, $location, $doEmail, $provider, $something, $something2);
return $row;
}
return false;
}
}
在我看來,'create()'方法需要的唯一參數是'$ request'變量。其他對象使用的'create()'方法是否都共享相同的簽名? – jeroen
我會考慮發佈到http://codereview.stackexchange.com/ – JimL
'ListForm'類是否適合你的結構?在Symfony中,您創建表單類,將請求傳遞給它,並根據請求填充表單數據,也可以擴展以進行驗證等。如果是這樣,你可以在addList中做這樣的事情:'$ form = new ListForm(); $形式 - >的handleRequest($請求); $ created = $ this-> list-> create($ form);'然後List :: create可以是'create(ListForm $ form)'這會給自動完成等等 – JimL