<? php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend \Db\TableGateway\Feature ; use Zend \Db\ResultSet\ResultSet ; use Zend \Db\RowGateway\RowGateway ; use Zend \Db\RowGateway\RowGatewayInterface ; use Zend \Db\TableGateway\Exception ; class RowGatewayFeature extends AbstractFeature { /** * @var array */ protected $constructorArguments = array (); /** * @param null $primaryKey */ public function __construct () { $this -> 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 ); } } }
#
Change
User
Description
Committed
#1
18334
Liz Lam
initial add of jambox
9 years ago