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