blob: 9912e7ff244c8083a98d7c0b66c5800565272e35 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
<?php
/**
* TActiveRecordManager class file.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
* @copyright Copyright © 2005-2008 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Data.ActiveRecord
*/
Prado::using('System.Data.TDbConnection');
Prado::using('System.Data.ActiveRecord.TActiveRecord');
Prado::using('System.Data.ActiveRecord.Exceptions.TActiveRecordException');
Prado::using('System.Data.ActiveRecord.TActiveRecordGateway');
/**
* TActiveRecordManager provides the default DB connection,
* default active record gateway, and table meta data inspector.
*
* The default connection can be set as follows:
* <code>
* TActiveRecordManager::getInstance()->setDbConnection($conn);
* </code>
* All new active record created after setting the
* {@link DbConnection setDbConnection()} will use that connection unless
* the custom ActiveRecord class overrides the ActiveRecord::getDbConnection().
*
* Set the {@link setCache Cache} property to an ICache object to allow
* the active record gateway to cache the table meta data information.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
* @version $Id$
* @package System.Data.ActiveRecord
* @since 3.1
*/
class TActiveRecordManager extends TComponent
{
private $_gateway;
private $_meta=array();
private $_connection;
private $_cache;
/**
* @return ICache application cache.
*/
public function getCache()
{
return $this->_cache;
}
/**
* @param ICache application cache
*/
public function setCache($value)
{
$this->_cache=$value;
}
/**
* @param TDbConnection default database connection
*/
public function setDbConnection($conn)
{
$this->_connection=$conn;
}
/**
* @return TDbConnection default database connection
*/
public function getDbConnection()
{
return $this->_connection;
}
/**
* @return TActiveRecordManager static instance of record manager.
*/
public static function getInstance($self=null)
{
static $instance;
if($self!==null)
$instance=$self;
else if($instance===null)
$instance = new self;
return $instance;
}
/**
* @return TActiveRecordGateway record gateway.
*/
public function getRecordGateway()
{
if($this->_gateway === null) {
$this->_gateway = $this->createRecordGateway();
}
return $this->_gateway;
}
/**
* @return TActiveRecordGateway default record gateway.
*/
protected function createRecordGateway()
{
return new TActiveRecordGateway($this);
}
}
|