constructorArguments = func_get_args(); } public function postInitialize() { $args = $this->constructorArguments; /** @var $resultSetPrototype ResultSet */ $resultSetPrototype = $this->tableGateway->resultSetPrototype; if (!$this->tableGateway->resultSetPrototype instanceof ResultSet) { throw new Exception\RuntimeException( 'This feature ' . __CLASS__ . ' expects the ResultSet to be an instance of Zend\Db\ResultSet\ResultSet' ); } if (isset($args[0])) { if (is_string($args[0])) { $primaryKey = $args[0]; $rowGatewayPrototype = new RowGateway($primaryKey, $this->tableGateway->table, $this->tableGateway->adapter, $this->tableGateway->sql); $resultSetPrototype->setArrayObjectPrototype($rowGatewayPrototype); } elseif ($args[0] instanceof RowGatewayInterface) { $rowGatewayPrototype = $args[0]; $resultSetPrototype->setArrayObjectPrototype($rowGatewayPrototype); } } else { // get from metadata feature $metadata = $this->tableGateway->featureSet->getFeatureByClassName('Zend\Db\TableGateway\Feature\MetadataFeature'); if ($metadata === false || !isset($metadata->sharedData['metadata'])) { throw new Exception\RuntimeException( 'No information was provided to the RowGatewayFeature and/or no MetadataFeature could be consulted to find the primary key necessary for RowGateway object creation.' ); } $primaryKey = $metadata->sharedData['metadata']['primaryKey']; $rowGatewayPrototype = new RowGateway($primaryKey, $this->tableGateway->table, $this->tableGateway->adapter, $this->tableGateway->sql); $resultSetPrototype->setArrayObjectPrototype($rowGatewayPrototype); } } }