내 웹 사이트에 Laravel을 사용하고 있지만 코드 구조를 판단하는 데 문제가있어 내 구조의 타당성에 대한 정보를 원합니다.컨트롤러에 대한 책임 분리 PHP
물론 컨트롤러를 통한 라우팅을 사용하면 요청이 들어오고이 주소는 Processor
으로 라우팅되며이 프로세서는 프로세서가 다시 라우팅하는 데 사용하는 수신기 (컨트롤러)를 수신합니다. 예 이제
class PageController{
public function __construct(PageProcessor $pageProcessor)
{
$this->processor = $pageProcessor;
}
public function edit($id = null)
{
$this->processor->edit($this, $id);
}
public function editFailed($message)
{
return View::make('edit.failed', $message);
}
public function editSucceed($data)
{
return View::make('edit.succeed', $data);
}
}
class PageProcessor{
public function __construct(PageRepository $pageRepository, PageValidator $pageValidator)
{
$this->repository = $pageRepository;
$this->validator = $pageValidator;
}
public function edit($id = null)
{
// logic for showing the edit page
//
// more logic
if($logicSucceeded)
{
return $listener->editSucceed(compact('page', 'awesomeData'));
}
else
{
return $listener->editFailed('something failed');
}
}
}
내 문제는 가지 책임의 분리를 패배,하지만 난이 일을 다른 방법을 생각하지 못할, 프로세서 컨트롤러의 통과와 함께입니다.
요약 : 서로 얽혀있는 클래스의 책임을 지키는 가장 좋은 방법은 무엇입니까?
어떻게 당신이 어떤 점에서 reponsibilities를 혼합 할 수있는 페이지 프로세서에서 편집 페이지를 표시하기위한 논리를 가지고, 다른 그것이 어떻게 작동하는지 알 수없는 한 사용 ... 제 생각에는
컨트롤러의 유효성 검사는 신성 모독처럼 보입니다. 비즈니스 논리라고 생각하지 않습니까? 내 프로세서는 유효성 검사와 모델을 함께 가져오고 예를 들어 테이블을 만듭니다. 컨트롤러에서 유효성 검증을 할 수 있습니까?> – WiseStrawberry
정교하게 편집되었습니다. –
아 .... Laravel 4.3 프로젝트로 뛰어 들어야 할 것입니다. – WiseStrawberry