diff options
| author | GODZilla0480@gmail.com <> | 2011-08-28 05:51:36 +0000 | 
|---|---|---|
| committer | GODZilla0480@gmail.com <> | 2011-08-28 05:51:36 +0000 | 
| commit | 5ad92b6fe39f04aad8d94f32d23c7e665725fe8c (patch) | |
| tree | d4fe7c56be6e1b2c4becf136f3d3f2b3c2517049 /framework/Data | |
| parent | ad5c394d39c35b48b7cfc4384288e53d268d0aab (diff) | |
Modify TActiveRecordConfig & TActiveRecordManager to allow custom subclassing of System.Data.ActiveRecord.TActiveRecordManager & System.Data.ActiveRecord.TActiveRecordGateway
Diffstat (limited to 'framework/Data')
| -rw-r--r-- | framework/Data/ActiveRecord/TActiveRecordConfig.php | 66 | ||||
| -rw-r--r-- | framework/Data/ActiveRecord/TActiveRecordManager.php | 27 | 
2 files changed, 91 insertions, 2 deletions
| diff --git a/framework/Data/ActiveRecord/TActiveRecordConfig.php b/framework/Data/ActiveRecord/TActiveRecordConfig.php index f9a483ec..d5512009 100644 --- a/framework/Data/ActiveRecord/TActiveRecordConfig.php +++ b/framework/Data/ActiveRecord/TActiveRecordConfig.php @@ -72,6 +72,26 @@ Prado::using('System.Data.ActiveRecord.TActiveRecordManager');   */
  class TActiveRecordConfig extends TDataSourceConfig
  {
 +	const DEFAULT_MANAGER_CLASS = 'System.Data.ActiveRecord.TActiveRecordManager';
 +	const DEFAULT_GATEWAY_CLASS = 'System.Data.ActiveRecord.TActiveRecordGateway';
 +
 +	/**
 +	 * Defaults to {@link TActiveRecordConfig::DEFAULT_GATEWAY_CLASS DEFAULT_MANAGER_CLASS}
 +	 * @var string
 +	 */
 +	private $_managerClass = self::DEFAULT_MANAGER_CLASS;
 +
 +	/**
 +	 * Defaults to {@link TActiveRecordConfig::DEFAULT_GATEWAY_CLASS DEFAULT_GATEWAY_CLASS}
 +	 * @var string
 +	 */
 +	private $_gatewayClass = self::DEFAULT_GATEWAY_CLASS;
 +
 +	/**
 +	 * @var TActiveRecordManager
 +	 */
 +	private $_manager = null;
 +
  	private $_enableCache=false;
  	/**
 @@ -89,11 +109,55 @@ class TActiveRecordConfig extends TDataSourceConfig  	public function init($xml)
  	{
  		parent::init($xml);
 -		$manager = TActiveRecordManager::getInstance();
 +		$manager = $this -> getManager();
  		if($this->getEnableCache())
  			$manager->setCache($this->getApplication()->getCache());
  		$manager->setDbConnection($this->getDbConnection());
  		$manager->setInvalidFinderResult($this->getInvalidFinderResult());
 +		$manager->setGatewayClass($this->getGatewayClass());
 +	}
 +
 +	/**
 +	 * @return TActiveRecordManager
 +	 */
 +	public function getManager() {
 +		if($this->_manager === null)
 +			$this->_manager = Prado::createComponent($this -> getManagerClass());
 +		return TActiveRecordManager::getInstance($this->_manager);
 +	}
 +
 +	/**
 +	 * Set implementation class of ActiveRecordManager
 +	 * @param string $value
 +	 */
 +	public function setManagerClass($value)
 +	{
 +		$this->_managerClass = TPropertyValue::ensureString($value);
 +	}
 +
 +	/**
 +	 * @return string the implementation class of ActiveRecordManager. Defaults to {@link TActiveRecordConfig::DEFAULT_GATEWAY_CLASS DEFAULT_MANAGER_CLASS}
 +	 */
 +	public function getManagerClass()
 +	{
 +		return $this->_managerClass;
 +	}
 +
 +	/**
 +	 * Set implementation class of ActiveRecordGateway
 +	 * @param string $value
 +	 */
 +	public function setGatewayClass($value)
 +	{
 +		$this->_gatewayClass = TPropertyValue::ensureString($value);
 +	}
 +
 +	/**
 +	 * @return string the implementation class of ActiveRecordGateway. Defaults to {@link TActiveRecordConfig::DEFAULT_GATEWAY_CLASS DEFAULT_GATEWAY_CLASS}
 +	 */
 +	public function getGatewayClass()
 +	{
 +		return $this->_gatewayClass;
  	}
  	/**
 diff --git a/framework/Data/ActiveRecord/TActiveRecordManager.php b/framework/Data/ActiveRecord/TActiveRecordManager.php index d39ef69e..1a1c1f37 100644 --- a/framework/Data/ActiveRecord/TActiveRecordManager.php +++ b/framework/Data/ActiveRecord/TActiveRecordManager.php @@ -37,6 +37,14 @@ Prado::using('System.Data.ActiveRecord.TActiveRecordGateway');   */
  class TActiveRecordManager extends TComponent
  {
 +	const DEFAULT_GATEWAY_CLASS = 'System.Data.ActiveRecord.TActiveRecordGateway';
 +
 +	/**
 +	 * Defaults to {@link TActiveRecordManager::DEFAULT_GATEWAY_CLASS DEFAULT_GATEWAY_CLASS}
 +	 * @var string
 +	 */
 +	private $_gatewayClass = self::DEFAULT_GATEWAY_CLASS;
 +
  	private $_gateway;
  	private $_meta=array();
  	private $_connection;
 @@ -112,7 +120,24 @@ class TActiveRecordManager extends TComponent  	 */
  	protected function createRecordGateway()
  	{
 -		return new TActiveRecordGateway($this);
 +		return Prado::createComponent($this->getGatewayClass(), $this);
 +	}
 +
 +	/**
 +	 * Set implementation class of ActiveRecordGateway
 +	 * @param string $value
 +	 */
 +	public function setGatewayClass($value)
 +	{
 +		$this->_gatewayClass = (string)$value;
 +	}
 +
 +	/**
 +	 * @return string the implementation class of ActiveRecordGateway. Defaults to {@link TActiveRecordManager::DEFAULT_GATEWAY_CLASS DEFAULT_GATEWAY_CLASS}
 +	 */
 +	public function getGatewayClass()
 +	{
 +		return $this->_gatewayClass;
  	}
  	/**
 | 
