createUniqueID -> generateUniqueId renamed, dataset criteria added, registration...
[shipsimu.git] / inc / classes / main / registry / class_Registry.php
1 <?php
2 /**
3  * A registry for several data types
4  *
5  * @author              Roland Haeder <webmaster@ship-simu.org>
6  * @version             0.3.0
7  * @copyright   Copyright(c) 2007, 2008 Roland Haeder, this is free software
8  * @license             GNU GPL 3.0 or any newer version
9  * @link                http://www.mxchange.org
10  *
11  * This program is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23  */
24 class Registry extends BaseFrameworkSystem implements Register {
25         /**
26          * Instance of this class
27          */
28         private static $selfInstance = null;
29
30         /**
31          * Instance registry
32          */
33         private $instanceRegistry = array();
34
35         /**
36          * Protected constructor
37          *
38          * @return      void
39          */
40         protected function __construct () {
41                 // Call parent constructor
42                 parent::__construct(__CLASS__);
43
44                 // Set part description
45                 $this->setObjectDescription("Registry class");
46
47                 // Create unique ID number
48                 $this->generateUniqueId();
49
50                 // Clean up a little
51                 $this->removeNumberFormaters();
52                 $this->removeSystemArray();
53         }
54
55         /**
56          * Singleton getter for self instance
57          *
58          * @return      $selfInstance   Instance of this class
59          */
60         public final static function getRegistry () {
61                 // Is an instance there?
62                 if (is_null(self::$selfInstance)) {
63                         // Not yet, so create one
64                         self::$selfInstance = new Registry();
65                 }
66
67                 // Return the instance
68                 return self::$selfInstance;
69         }
70
71         /**
72          * Checks wether an instance key was found
73          *
74          * @param       $instanceKey    The key holding an instance in the registry
75          * @return      $exists                 Wether the key exists in the registry
76          */
77         public function instanceExists ($instanceKey) {
78                 // Does this key exists?
79                 $exists = (isset($this->instanceRegistry[$instanceKey]));
80
81                 // Return the result
82                 return $exists;
83         }
84
85         /**
86          * Adds/overwrites a new instance to the registry at the given key
87          *
88          * @param       $instanceKey            The key to identify the instance
89          * @param       $objectInstance         An instance we shall store
90          * @return      void
91          */
92         public function addInstance ($instanceKey, Registerable $objectInstance) {
93                 $this->instanceRegistry[$instanceKey] = $objectInstance;
94         }
95
96         /**
97          * Gets a registered instance or null if not found
98          *
99          * @param       $instanceKey            The key to identify the instance
100          * @return      $objectInstance         An instance we shall store
101          */
102         public function getInstance ($instanceKey) {
103                 // By default the instance is not in the registry
104                 $objectInstance = null;
105
106                 // Is the instance there?
107                 if ($this->instanceExists($instanceKey)) {
108                         $objectInstance = $this->instanceRegistry[$instanceKey];
109                 }
110
111                 // Return the result
112                 return $objectInstance;
113         }
114 }
115
116 // [EOF]
117 ?>