1.9. Zend::initRegistry($registry = 'Zend_Registry')
Пред. | Глава 1. Zend | След.

## 1.9. Zend::initRegistry($registry = 'Zend_Registry')

Разработчики, желающие расширить существующие функциональные возможности реестра, могут использовать данную функцию. Этот метод позволяет создавать подклассы Zend_Registry, включая добавление методов-псевдонимов для offsetGet() и offsetExists(), таких, как has(), getval(), setval() и т.д. Для их использования следует создать экземпляр подкласса Zend_Registry в коде загрузки и затем передать его initRegistry() до того, как будут вызваны другие методы, связанные с использованием реестра. Следует иметь в виду, что initRegistry() может вызываться только один раз для предотвращения случайной перезаписи реестра после инициализации. Также при использовании Zend::registry() или Zend::register() будет автоматически вызван метод initRegistry(), если он не был вызван ранее.

Пример 1.5. register() / offsetSet() Example

    <?php
    class Zend_RegistryMine extends Zend_Registry
    {
        public function getval($index)
        {
            return $this->offsetGet($index);
        }
    }

    # в коде загрузки:

    $ini_array = parse_ini_file('your_stuff.ini'); // необязательный код
    $registry = new Zend_RegistryMine($ini_array);
    Zend::initRegistry($registry);

    # теперь методы Zend::registry(), Zend::register(), and Zend::isRegistered()
    # работают так, как нужно нам
    ?>

Используйте константу `ArrayObject::ARRAY_AS_PROPS` в конструкторе для того, чтобы получать доступ к значениям, используя конструкцию `$registry->$indexName` в дополнение к конструкции `$registry[$indexName]`. Однако остерегайтесь конфликтов имен, если создаете наследников класса Zend_Registry с добавлением закрытых переменных.

Пример 1.6. Доступ к значениям с использованием объектно-ориентированной нотации вместо нотации доступа к массиву

    <?php
    $registry = new Zend_Registry(array(), ArrayObject::ARRAY_AS_PROPS);
    Zend::initRegistry($registry);
    ?>

Пред. | Уровень выше | След.
1.8. Zend::registry($index = null) | Начало | Глава 2. Zend_Acl