web/rsln/Zend/Registry.php
author Samuel Huron <samuel.huron@centrepompidou.fr>
Tue, 08 Mar 2011 10:57:18 +0100
changeset 52 d522fd390921
parent 20 7e0a67a20e74
permissions -rw-r--r--
TEST SUR IE 9 ( changer le host de la library tooltip pour optimisation maximum)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
20
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     1
<?php
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     2
/**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     3
 * Zend Framework
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     4
 *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     5
 * LICENSE
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     6
 *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     7
 * This source file is subject to the new BSD license that is bundled
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     8
 * with this package in the file LICENSE.txt.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
     9
 * It is also available through the world-wide-web at this URL:
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    10
 * http://framework.zend.com/license/new-bsd
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    11
 * If you did not receive a copy of the license and are unable to
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    12
 * obtain it through the world-wide-web, please send an email
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    13
 * to license@zend.com so we can send you a copy immediately.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    14
 *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    15
 * @category   Zend
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    16
 * @package    Zend_Registry
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    17
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    18
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    19
 * @version    $Id: Registry.php 20096 2010-01-06 02:05:09Z bkarwin $
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    20
 */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    21
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    22
/**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    23
 * Generic storage class helps to manage global data.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    24
 *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    25
 * @category   Zend
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    26
 * @package    Zend_Registry
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    27
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    28
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    29
 */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    30
class Zend_Registry extends ArrayObject
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    31
{
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    32
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    33
     * Class name of the singleton registry object.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    34
     * @var string
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    35
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    36
    private static $_registryClassName = 'Zend_Registry';
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    37
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    38
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    39
     * Registry object provides storage for shared objects.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    40
     * @var Zend_Registry
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    41
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    42
    private static $_registry = null;
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    43
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    44
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    45
     * Retrieves the default registry instance.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    46
     *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    47
     * @return Zend_Registry
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    48
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    49
    public static function getInstance()
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    50
    {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    51
        if (self::$_registry === null) {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    52
            self::init();
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    53
        }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    54
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    55
        return self::$_registry;
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    56
    }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    57
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    58
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    59
     * Set the default registry instance to a specified instance.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    60
     *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    61
     * @param Zend_Registry $registry An object instance of type Zend_Registry,
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    62
     *   or a subclass.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    63
     * @return void
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    64
     * @throws Zend_Exception if registry is already initialized.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    65
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    66
    public static function setInstance(Zend_Registry $registry)
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    67
    {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    68
        if (self::$_registry !== null) {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    69
            require_once 'Zend/Exception.php';
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    70
            throw new Zend_Exception('Registry is already initialized');
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    71
        }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    72
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    73
        self::setClassName(get_class($registry));
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    74
        self::$_registry = $registry;
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    75
    }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    76
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    77
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    78
     * Initialize the default registry instance.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    79
     *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    80
     * @return void
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    81
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    82
    protected static function init()
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    83
    {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    84
        self::setInstance(new self::$_registryClassName());
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    85
    }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    86
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    87
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    88
     * Set the class name to use for the default registry instance.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    89
     * Does not affect the currently initialized instance, it only applies
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    90
     * for the next time you instantiate.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    91
     *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    92
     * @param string $registryClassName
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    93
     * @return void
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    94
     * @throws Zend_Exception if the registry is initialized or if the
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    95
     *   class name is not valid.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    96
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    97
    public static function setClassName($registryClassName = 'Zend_Registry')
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    98
    {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    99
        if (self::$_registry !== null) {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   100
            require_once 'Zend/Exception.php';
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   101
            throw new Zend_Exception('Registry is already initialized');
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   102
        }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   103
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   104
        if (!is_string($registryClassName)) {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   105
            require_once 'Zend/Exception.php';
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   106
            throw new Zend_Exception("Argument is not a class name");
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   107
        }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   108
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   109
        /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   110
         * @see Zend_Loader
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   111
         */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   112
        if (!class_exists($registryClassName)) {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   113
            require_once 'Zend/Loader.php';
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   114
            Zend_Loader::loadClass($registryClassName);
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   115
        }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   116
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   117
        self::$_registryClassName = $registryClassName;
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   118
    }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   119
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   120
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   121
     * Unset the default registry instance.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   122
     * Primarily used in tearDown() in unit tests.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   123
     * @returns void
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   124
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   125
    public static function _unsetInstance()
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   126
    {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   127
        self::$_registry = null;
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   128
    }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   129
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   130
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   131
     * getter method, basically same as offsetGet().
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   132
     *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   133
     * This method can be called from an object of type Zend_Registry, or it
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   134
     * can be called statically.  In the latter case, it uses the default
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   135
     * static instance stored in the class.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   136
     *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   137
     * @param string $index - get the value associated with $index
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   138
     * @return mixed
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   139
     * @throws Zend_Exception if no entry is registerd for $index.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   140
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   141
    public static function get($index)
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   142
    {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   143
        $instance = self::getInstance();
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   144
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   145
        if (!$instance->offsetExists($index)) {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   146
            require_once 'Zend/Exception.php';
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   147
            throw new Zend_Exception("No entry is registered for key '$index'");
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   148
        }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   149
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   150
        return $instance->offsetGet($index);
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   151
    }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   152
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   153
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   154
     * setter method, basically same as offsetSet().
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   155
     *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   156
     * This method can be called from an object of type Zend_Registry, or it
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   157
     * can be called statically.  In the latter case, it uses the default
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   158
     * static instance stored in the class.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   159
     *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   160
     * @param string $index The location in the ArrayObject in which to store
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   161
     *   the value.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   162
     * @param mixed $value The object to store in the ArrayObject.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   163
     * @return void
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   164
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   165
    public static function set($index, $value)
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   166
    {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   167
        $instance = self::getInstance();
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   168
        $instance->offsetSet($index, $value);
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   169
    }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   170
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   171
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   172
     * Returns TRUE if the $index is a named value in the registry,
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   173
     * or FALSE if $index was not found in the registry.
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   174
     *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   175
     * @param  string $index
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   176
     * @return boolean
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   177
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   178
    public static function isRegistered($index)
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   179
    {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   180
        if (self::$_registry === null) {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   181
            return false;
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   182
        }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   183
        return self::$_registry->offsetExists($index);
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   184
    }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   185
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   186
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   187
     * Constructs a parent ArrayObject with default
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   188
     * ARRAY_AS_PROPS to allow acces as an object
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   189
     *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   190
     * @param array $array data array
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   191
     * @param integer $flags ArrayObject flags
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   192
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   193
    public function __construct($array = array(), $flags = parent::ARRAY_AS_PROPS)
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   194
    {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   195
        parent::__construct($array, $flags);
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   196
    }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   197
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   198
    /**
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   199
     * @param string $index
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   200
     * @returns mixed
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   201
     *
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   202
     * Workaround for http://bugs.php.net/bug.php?id=40442 (ZF-960).
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   203
     */
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   204
    public function offsetExists($index)
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   205
    {
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   206
        return array_key_exists($index, $this);
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   207
    }
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   208
7e0a67a20e74 add new rsln page
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   209
}