컨트롤러는 일반적으로 특정 리소스 (엔터티 클래스, 데이터베이스의 테이블)에 대해 만들어 지지만 응용 프로그램의 특정 부분을 담당하는 작업을 그룹화하기 위해 만들 수도 있습니다. 귀하의 예에서 이는 애플리케이션의 보안을 처리하는 컨트롤러입니다.
class SecurityController
{
// can handle both the login page display and
// the login page submission
login();
logout();
register();
// optional: confirm account after registration
confirm();
// displays the forgot password page
forgotPassword();
// displays the reset password page
// and handle the form submission
resetPassword();
}
참고 : 보안 관련 작업과 사용자 프로필 작업을 동일한 컨트롤러에 넣지 마십시오. 사용자와 관련되어 있기 때문에 의미가 있지만 하나는 인증을 처리하고 다른 하나는 전자 메일, 이름 등의 업데이트를 처리해야합니다.
리소스에 대해 컨트롤러를 Task
만들면 일반적인 CRUD 작업이 수행됩니다.
class TasksController
{
// usually displays a paginated list of tasks
index();
// displays a certain task, based on an identifier
show(id);
// displays page with form and
// handles form submission for creating
// new tasks
create();
// same as create(), but for changing records
update(id);
// displays confirmation message
// and handles submissions in case of confirmation
delete()
}
물론, 동일한 컨트롤러에 관련 리소스를 추가 할 수도 있습니다. 예를 들어 엔티티 Business
가 있고 각 BusinessService
엔티티에 여러 엔티티 가 있다고 가정하십시오 . 컨트롤러는 다음과 같습니다.
class BusinessController
{
index();
show(id);
create();
update(id);
delete();
// display the business services for a certain business
listBusinessServices(businessId);
// displays a certain business service
showBusinessService(id);
// create a new business service for a certain business
createBusinessService(businessId);
// updates a certain business service
updateBusinessService(id);
// deletes a certain business service
deleteBusinessService(id);
}
이 접근 방식은 관련 하위 항목이 상위 항목없이 존재할 수없는 경우에 적합합니다.
이것들은 나의 추천입니다 :
- 관련 작업 그룹 (보안 또는 리소스에 대한 CRUD 작업과 같은 특정 책임 처리)을 기반으로 컨트롤러를 만듭니다.
- 리소스 기반 컨트롤러의 경우 불필요한 작업을 추가하지 마십시오 (리소스를 업데이트하지 않을 경우 업데이트 작업을 추가하지 마십시오).
- "사용자 정의"작업을 추가하여 작업을 단순화 할 수 있습니다 (예 :
Subscription
제한된 수의 항목을 기반으로 가용성 이있는 엔터티가있는 경우 컨트롤러 use()
에서 하나의 항목을 빼는 단일 목적을 가진 컨트롤러에 새 작업을 추가 할 수 있음 Subscription
)
- 일을 단순하게 유지하십시오-수많은 동작과 복잡한 논리로 컨트롤러를 복잡하게 만들지 말고 동작 수를 줄이거 나 두 개의 컨트롤러를 만들어서 단순화하십시오.
- MVC 중심 프레임 워크를 사용하는 경우 모범 사례 지침 (있는 경우)을 따르십시오.
자세한 내용은 여기를 참조하십시오 .