나는 MySQL에 질문 테이블을 가지고 TableGateway와 QuestionFactory 모델을 가지고있다. TableGateway에서받은 QuestionType에 따라 다른 클래스를 인스턴스화하고 싶습니다. TextQuestion(), BoolQuestion() 등 fetchall 상황에서 이러한 다른 클래스의 결과 집합을 반환합니다.TableGateway와 클래스 팩토리를 사용하여 다른 클래스의 ResultSet 만들기 - ZF2
모든 것은 지금까지 상당히 표준입니다 :
/**
* fetch all
* @return resultset
*/
public function fetchAll()
{
$resultSet = $this->tableGateway->select();
return $resultSet;
}
그래서 나는 데이터베이스에 QuestionType에 따라 다른 클래스를 반환 할 QuestionFactory을 얻을 필요가 :
'Application\Model\QuestionTable' => function($sm) {
$tableGateway = $sm->get('QuestionTableGateway');
$table = new \Application\Model\QuestionTable($tableGateway);
return $table;
},
'QuestionTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new \Zend\Db\ResultSet\ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new \Application\Model\QuestionFactory());
return new \Zend\Db\TableGateway\TableGateway('questions', $dbAdapter, null, $resultSetPrototype);
},
QuestionTableGateway가있다 TableGatewayBase를 확장 .
저는 Zend \ Db \ ResultSet을 응용 프로그램 특정 버전으로 확장하고 setArrayObjectPrototype() 메소드를 다르게 구현할 생각이었습니다.
도움을 주시면 감사하겠습니다.
Abor.
감사합니다. Kilop, 지연 시간에 죄송합니다. 잠시 떨어져있었습니다. 나는 너를 보살펴 줄 것이다. – Aborgrove
아무런 문제가 없으면, QuestionFab 클래스에 대해서만 자신 만의 설정을 만들고 configF로 사용자 정의 할 수있는 Factory로 QuestionFab 클래스를 만들 수도 있다고 생각한 후에도 문제가 없습니다. – kilop