mirror of
https://github.com/torrentpier/torrentpier-lts.git
synced 2025-03-01 15:21:02 +03:00
68 lines
2.6 KiB
PHP
68 lines
2.6 KiB
PHP
<?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);
|
|
}
|
|
}
|
|
}
|