[TASK] Use simple file backend for core php cache
[Packages/TYPO3.CMS.git] / t3lib / class.t3lib_registry.php
index a572a17..61d2960 100644 (file)
@@ -26,7 +26,6 @@
  *  This copyright notice MUST APPEAR in all copies of the script!
  ***************************************************************/
 
-
 /**
  * A class to store and retrieve entries in a registry database table.
  *
@@ -37,8 +36,8 @@
  *
  * Credits: Heavily inspired by Drupal's variable_*() functions.
  *
- * @author     Ingo Renner <ingo@typo3.org>
- * @author     Bastian Waidelich <bastian@typo3.org>
+ * @author Ingo Renner <ingo@typo3.org>
+ * @author Bastian Waidelich <bastian@typo3.org>
  * @package TYPO3
  * @subpackage t3lib
  */
@@ -49,15 +48,14 @@ class t3lib_Registry implements t3lib_Singleton {
         */
        protected $entries = array();
 
-
        /**
         * Returns a persistent entry.
         *
-        * @param       string  Extension key for extensions starting with 'tx_' / 'Tx_' / 'user_' or 'core' for core registry entries
-        * @param       string  The key of the entry to return.
-        * @param       mixed   Optional default value to use if this entry has never been set. Defaults to NULL.
-        * @return      mixed   The value of the entry.
-        * @throws      InvalidArgumentException        Throws an exception if the given namespace is not valid
+        * @param string $namespace Extension key for extensions starting with 'tx_' / 'Tx_' / 'user_' or 'core' for core registry entries
+        * @param string $key The key of the entry to return.
+        * @param mixed $defaultValue Optional default value to use if this entry has never been set. Defaults to NULL.
+        * @return mixed The value of the entry.
+        * @throws InvalidArgumentException Throws an exception if the given namespace is not valid
         */
        public function get($namespace, $key, $defaultValue = NULL) {
                if (!isset($this->entries[$namespace])) {
@@ -69,14 +67,20 @@ class t3lib_Registry implements t3lib_Singleton {
 
        /**
         * Sets a persistent entry.
+        *
+        * This is the main method that can be used to store a key-value. It is name spaced with
+        * a unique string. This name space should be chosen from extensions that it is unique.
+        * It is advised to use something like 'tx_extensionname'. The prefix 'core' is reserved
+        * for the TYPO3 core.
+        *
         * Do not store binary data into the registry, it's not build to do that,
         * instead use the proper way to store binary data: The filesystem.
         *
-        * @param       string  Extension key for extensions starting with 'tx_' / 'Tx_' / 'user_' or 'core' for core registry entries.
-        * @param       string  The key of the entry to set.
-        * @param       mixed   The value to set. This can be any PHP data type; this class takes care of serialization if necessary.
-        * @return      void
-        * @throws      InvalidArgumentException        Throws an exception if the given namespace is not valid
+        * @param string $namespace Extension key for extensions starting with 'tx_' / 'Tx_' / 'user_' or 'core' for core registry entries.
+        * @param string $key The key of the entry to set.
+        * @param mixed $value The value to set. This can be any PHP data type; this class takes care of serialization if necessary.
+        * @return void
+        * @throws InvalidArgumentException Throws an exception if the given namespace is not valid
         */
        public function set($namespace, $key, $value) {
                $this->validateNamespace($namespace);
@@ -92,9 +96,9 @@ class t3lib_Registry implements t3lib_Singleton {
                        $GLOBALS['TYPO3_DB']->exec_INSERTquery(
                                'sys_registry',
                                array(
-                                        'entry_namespace' => $namespace,
-                                        'entry_key' => $key,
-                                        'entry_value' => $serializedValue
+                                       'entry_namespace' => $namespace,
+                                       'entry_key' => $key,
+                                       'entry_value' => $serializedValue
                                )
                        );
                } else {
@@ -103,7 +107,7 @@ class t3lib_Registry implements t3lib_Singleton {
                                'entry_namespace = ' . $GLOBALS['TYPO3_DB']->fullQuoteStr($namespace, 'sys_registry')
                                . ' AND entry_key = ' . $GLOBALS['TYPO3_DB']->fullQuoteStr($key, 'sys_registry'),
                                array(
-                                        'entry_value' => $serializedValue
+                                       'entry_value' => $serializedValue
                                )
                        );
                }
@@ -114,10 +118,10 @@ class t3lib_Registry implements t3lib_Singleton {
        /**
         * Unsets a persistent entry.
         *
-        * @param       string  Namespace. extension key for extensions or 'core' for core registry entries
-        * @param       string  The key of the entry to unset.
-        * @return      void
-        * @throws      InvalidArgumentException        Throws an exception if the given namespace is not valid
+        * @param string $namespace Namespace. extension key for extensions or 'core' for core registry entries
+        * @param string $key The key of the entry to unset.
+        * @return void
+        * @throws InvalidArgumentException Throws an exception if the given namespace is not valid
         */
        public function remove($namespace, $key) {
                $this->validateNamespace($namespace);
@@ -134,9 +138,9 @@ class t3lib_Registry implements t3lib_Singleton {
        /**
         * Unsets all persistent entries of the given namespace.
         *
-        * @param       string  Namespace. extension key for extensions or 'core' for core registry entries
-        * @return      void
-        * @throws      InvalidArgumentException        Throws an exception if the given namespace is not valid
+        * @param string $namespace Namespace. extension key for extensions or 'core' for core registry entries
+        * @return void
+        * @throws InvalidArgumentException Throws an exception if the given namespace is not valid
         */
        public function removeAllByNamespace($namespace) {
                $this->validateNamespace($namespace);
@@ -152,9 +156,9 @@ class t3lib_Registry implements t3lib_Singleton {
        /**
         * Loads all entries of the given namespace into the internal $entries cache.
         *
-        * @param       string  Namespace. extension key for extensions or 'core' for core registry entries
-        * @return      void
-        * @throws      InvalidArgumentException        Throws an exception if the given namespace is not valid
+        * @param string $namespace Namespace. extension key for extensions or 'core' for core registry entries
+        * @return void
+        * @throws InvalidArgumentException Throws an exception if the given namespace is not valid
         */
        protected function loadEntriesByNamespace($namespace) {
                $this->validateNamespace($namespace);
@@ -172,22 +176,20 @@ class t3lib_Registry implements t3lib_Singleton {
        }
 
        /**
-        * Checks the given namespace. If it does not have a valid format an
-        * exception is thrown.
-        * Allowed namespaces are 'core', 'tx_*', 'Tx_*' and 'user_*'
+        * Checks the given namespace.
+        * It must be at least two characters long. The word 'core' is reserved for
+        * TYPO3 core usage.
         *
-        * @param       string  Namespace. extension key for extensions or 'core' for core registry entries
-        * @return      void
-        * @throws      InvalidArgumentException        Throws an exception if the given namespace is not valid
+        * If it does not have a valid format an exception is thrown.
+        *
+        * @param string $namespace Namespace
+        * @return void
+        * @throws InvalidArgumentException Throws an exception if the given namespace is not valid
         */
        protected function validateNamespace($namespace) {
-               if (t3lib_div::hasValidClassPrefix($namespace)) {
-                       return;
-               }
-
-               if ($namespace !== 'core') {
+               if (strlen($namespace) < 2) {
                        throw new InvalidArgumentException(
-                               '"' . $namespace . '" is no valid Namespace. The namespace has to be prefixed with "tx_", "Tx_", "user_" or must be equal to "core"',
+                               'Given namespace must be longer than two characters.',
                                1249755131
                        );
                }