[BUGFIX] Omit constructor injection for optional parameters
[Packages/TYPO3.CMS.git] / typo3 / sysext / extbase / Classes / Object / Container / ClassInfoCache.php
1 <?php
2 namespace TYPO3\CMS\Extbase\Object\Container;
3
4 /***************************************************************
5 * Copyright notice
6 *
7 * (c) 2010-2013 Extbase Team (http://forge.typo3.org/projects/typo3v4-mvc)
8 * Extbase is a backport of TYPO3 Flow. All credits go to the TYPO3 Flow team.
9 * All rights reserved
10 *
11 * This script is part of the TYPO3 project. The TYPO3 project is
12 * free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 2 of the License, or
15 * (at your option) any later version.
16 *
17 * The GNU General Public License can be found at
18 * http://www.gnu.org/copyleft/gpl.html.
19 * A copy is found in the textfile GPL.txt and important notices to the license
20 * from the author is found in LICENSE.txt distributed with these scripts.
21 *
22 *
23 * This script is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
27 *
28 * This copyright notice MUST APPEAR in all copies of the script!
29 ***************************************************************/
30 /**
31 * Simple Cache for classInfos
32 *
33 * @author Daniel Pötzinger
34 */
35 class ClassInfoCache {
36
37 /**
38 * @var array
39 */
40 private $level1Cache = array();
41
42 /**
43 * @var \TYPO3\CMS\Core\Cache\Frontend\VariableFrontend
44 */
45 private $level2Cache;
46
47 /**
48 * constructor
49 */
50 public function __construct() {
51 $this->initializeLevel2Cache();
52 }
53
54 /**
55 * checks if cacheentry exists for id
56 *
57 * @param string $id
58 * @return boolean
59 */
60 public function has($id) {
61 return isset($this->level1Cache[$id]) || $this->level2Cache->has($id);
62 }
63
64 /**
65 * Gets the cache for the id
66 *
67 * @param string $id
68 * @return mixed
69 */
70 public function get($id) {
71 if (!isset($this->level1Cache[$id])) {
72 $this->level1Cache[$id] = $this->level2Cache->get($id);
73 }
74 return $this->level1Cache[$id];
75 }
76
77 /**
78 * sets the cache for the id
79 *
80 * @param string $id
81 * @param mixed $value
82 */
83 public function set($id, $value) {
84 $this->level1Cache[$id] = $value;
85 $this->level2Cache->set($id, $value);
86 }
87
88 /**
89 * Initialize the TYPO3 second level cache
90 */
91 private function initializeLevel2Cache() {
92 $this->level2Cache = $GLOBALS['typo3CacheManager']->getCache('extbase_object');
93 }
94 }