2017-05-08 8 views
0

그래서 Zend Expressive라는 새로운 프레임 워크로 작업하기 시작했습니다.이 프레임 워크는 코드를 생성하고 비교적 빠르게 실행할 수있는 두 번째 PSR-7 구성 요소 기반 프레임 워크입니다.프로젝트가 커지면 공장 상용구를 다루는 방법은?

이제 내 표현의 문제점은 프로젝트가 커지면 공장 기본 규격도 증가한다는 것입니다. 그래서 모든 Action 클래스에는 ActionFactory 클래스가 짝을 이루고 적절한 의존성을 주입합니다. 그러면 우리가 파견하여 경로에 전달하기 전에 앨리어스를 만듭니다.

더 많은 작업을 수행하면 더 많은 상용구가 만들어지고 보일러 판을 줄이는 방법을 파악하려고합니다.

+0

zend-servicemanager를 사용하는 경우 AbstractFactoryInterface를 사용할 수 있습니다. https://xtreamwayz.com/blog/2015-12-30-psr7-abstract-action-factory-one-for-all – xtreamwayz

+0

공장 기본 제공 기호가 그리 많지 않습니다. 자세한 정보 및 PhpStorm과 같은 IDE에는 생성 속도를 높이기위한 다양한 편의 옵션이 추가되었습니다. 즉, 버그가 아니라 기능입니다 :-D – dualmon

+0

@extreamwayz 그래,하지만 젠드의 서비스 관리자를 사용하지 않으면 우리는 보편적 인 해결책이 필요하다. – exts

답변

1

나는 의견에서 말했듯이 공장을 만드는 보편적 인 해결책은 없다고 생각합니다. 나는 당신이 젠드 servicemanager를 사용하지 않는다는 것을 압니다 만, 공장 수업을 생성하는 cli 명령을 가지고 있습니다 : https://docs.zendframework.com/zend-servicemanager/console-tools/#generate-factory-for-class

당신이 직접 공장 발전기를 만드는 방법에 대한 아이디어를 줄지도 모릅니다.

는 여기에 대한 기사입니다 : http://www.masterzendframework.com/simple-factory-generation-with-factorycreator/

0

의존성 해결과 논리를 구현하기 위해 시도 할 수 있습니다. 클래스 리플렉션으로 종속성을 해결하여 많은 팩토리를 저장할 수 있습니다.

$instance = null; 
    $reflection = new \ReflectionClass($className); 

    $constructor = $reflection->getConstructor(); 
    if ($constructor === null) { 
     // no constructor specified, you can simply return the new instance. 
     $instance = $reflection->newInstanceWithoutConstructor(); 
    } else { 
     // if there is constructor, you can loop through the constructor parameters and build the instance. 
    } 

여기서 순환 종속성을 피하기 위해주의해야합니다.