저는 추상 시스템을 구축하기 위해 Laravel 5.2를 사용하고 있습니다. 고객이 특정 구현을 필요로 할 때 코드 일부를 재정의해야합니다.바인드 콘크리트 구현이 올바른가요?
컨트롤러는 기본적으로 일부 사용자 지정 요청 (콘크리트)에 따라 달라집니다 : 내가 생각하고 무엇
이 시나리오 같은 것입니다. 고객이 나에게 다른 비즈니스 규칙을 요청하면이 사용자 지정 요청을 확장하고이 하위 구현을 부모에게 바인딩해야합니다.
$this->app->bind(ParentImpl::class, ChildImpl::class);
소프트웨어 아키텍처 개념에 대해 이야기하고 싶습니다. 어떻게해야합니까? 맞습니까?
[편집]
구체적인 예를 들어,이 같은 요청 사용하는 동작이 있습니다
class ParentRequest extends Request
{
public function rules()
{
return [
'a_field' => 'required',
'b_field' => 'max:100'
];
}
}
이제 모든 :
class SomeController extends Controller
{
public function someAction(ParentRequest $request)
{
# perform action
}
}
내 요청이 일부 비즈니스 유효성 검사 논리가를 작동, 내 기본 시스템 논리는 괜찮습니다! 하지만 내 소프트웨어는 다른 프로젝트의 기본입니다, 우리는 작곡가를 통해 그것을 사용하고 특정 코드는 애플 리케이션 경로에 속하는 것입니다.
고객이 비즈니스 로직의 수정을 요청하면 이전 버전을 재정의해야합니다. 내 질문은 : 맞습니까? 개념적으로 말하면서 아래의 코드와 같은 것을 할 수 있을까요?
class ChildRequest extends ParentRequest
{
public function rules()
{
return [
'a_field' => '',
'b_field' => 'max:255'
];
}
}
그리고, 프로젝트의 모든 종속성을 대체 할 바인딩 :
class AppServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->bind(ParentImpl::class, ChildImpl::class);
}
}
당신은이 질문을 더 구체적으로 설명 할 수 있습니까? 귀하의 설명은 이해 하기엔 너무 추상적입니다. –
@SupunWijerathne 내가 편집 : –