# Coverage for Doctrine_Table_Repository

Back to coverage report

1 | <?php
2 | /*
3 | * $Id: Repository.php 2963 2007-10-21 06:23:59Z Jonathan.Wage $
4 | *
5 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
6 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16 | *
17 | * This software consists of voluntary contributions made by many individuals
18 | * and is licensed under the LGPL. For more information, see
19 | * <http://www.phpdoctrine.org>.
20 | */
21 |
22 | /**
23 | * Doctrine_Repository
24 | * each record is added into Doctrine_Repository at the same time they are created,
25 | * loaded from the database or retrieved from the cache
26 | *
27 | * @author Konsta Vesterinen <kvesteri@cc.hut.fi>
28 | * @package Doctrine
29 | * @subpackage Table
30 | * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
31 | * @link www.phpdoctrine.org
32 | * @since 1.0
33 | * @version $Revision: 2963 $
34 | */
35 | class Doctrine_Table_Repository implements Countable, IteratorAggregate
36 | {
37 | /**
38 | * @var object Doctrine_Table $table
39 | */
40 | private $table;
41 |
42 | /**
43 | * @var array $registry
44 | * an array of all records
45 | * keys representing record object identifiers
46 | */
47 | private $registry = array();
48 |
49 | /**
50 | * constructor
51 | *
52 | * @param Doctrine_Table $table
53 | */
54 | public function __construct(Doctrine_Table $table)
55 | {
56 | $this->table = $table;
57 | }
58 |
59 | /**
60 | * getTable
61 | *
62 | * @return object Doctrine_Table
63 | */
64 | public function getTable()
65 | {
66 | return $this->table;
67 | }
68 |
69 | /**
70 | * add
71 | *
72 | * @param Doctrine_Record $record record to be added into registry
73 | * @return boolean
74 | */
75 | public function add(Doctrine_Record $record)
76 | {
77 | $oid = $record->getOID();
78 |
79 | if (isset($this->registry[$oid])) {
80 | return false;
81 | }
82 | $this->registry[$oid] = $record;
83 |
84 | return true;
85 | }
86 |
87 | /**
88 | * get
89 | * @param integer $oid
90 | * @throws Doctrine_Table_Repository_Exception
91 | */
92 | public function get($oid)
93 | {
94 | if ( ! isset($this->registry[$oid])) {
95 | throw new Doctrine_Table_Repository_Exception("Unknown object identifier");
96 | }
97 | return $this->registry[$oid];
98 | }
99 |
100 | /**
101 | * count
102 | * Doctrine_Registry implements interface Countable
103 | * @return integer the number of records this registry has
104 | */
105 | public function count()
106 | {
107 | return count($this->registry);
108 | }
109 |
110 | /**
111 | * @param integer $oid object identifier
112 | * @return boolean whether ot not the operation was successful
113 | */
114 | public function evict($oid)
115 | {
116 | if ( ! isset($this->registry[$oid])) {
117 | return false;
118 | }
119 | unset($this->registry[$oid]);
120 | return true;
121 | }
122 |
123 | /**
124 | * @return integer number of records evicted
125 | */
126 | public function evictAll()
127 | {
128 | $evicted = 0;
129 | foreach ($this->registry as $oid=>$record) {
130 | if ($this->evict($oid)) {
131 | $evicted++;
132 | }
133 | }
134 | return $evicted;
135 | }
136 |
137 | /**
138 | * getIterator
139 | * @return ArrayIterator
140 | */
141 | public function getIterator()
142 | {
143 | return new ArrayIterator($this->registry);
144 | }
145 |
146 | /**
147 | * contains
148 | * @param integer $oid object identifier
149 | */
150 | public function contains($oid)
151 | {
152 | return isset($this->registry[$oid]);
153 | }
154 |
155 | /**
156 | * loadAll
157 | * @return void
158 | */
159 | public function loadAll()
160 | {
161 | $this->table->findAll();
162 | }
163 | }