Разработчики, желающие расширить существующие функциональные возможности реестра, могут использовать данную функцию. Этот метод позволяет создавать подклассы 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 с добавлением закрытых переменных.