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

Programiści którzy chcą rozszerzyć istniejącą funkcjonalność rejestru mogą użyć tej funkcji. Ta metoda umożliwia utworzyć podklasę Zend_Registry, włączając w to dodanie aliasów dla metod takich jak offsetGet() oraz offsetExists(), nazywając je np. has(), getval(), setval(), itp., tworząc instancję podklasy Zend_Registry w pliku ładującym, a następnie przekazując tą instancję do metody initRegistry(), zanim zostaną użyte inne związane z rejestrem metody. Zauważ, że metoda initRegistry() może być użyta tylko raz, aby zapobiec przypadkowemu nadpisaniu rejestru po jego zainicjowaniu. Dodatkowo używając metod Zend::registry() lub Zend::register() automatycznie wywoływana jest metoda initRegistry(), jeśli rejestr nie został jeszcze utworzony.

Przykład 1.5. Przykład użycia register() / offsetSet()

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

# w twoim pliku ładującym:

$ini_array = parse_ini_file('your_stuff.ini'); // zwykle opcjonalne
$registry = new Zend_RegistryMine($ini_array);
Zend::initRegistry($registry);

# teraz metody Zend::registry(), Zend::register(), oraz Zend::isRegistered() działają jak powinny
?>

Użyj stałej ArrayObject::ARRAY_AS_PROPS w konstruktorze aby włączyć możliwość uzyskiwania dostępu do wartości używając $registry->$indexName, zamiast $registry[$indexName]. Jakkolwiek, uważaj na ewentualne konflikty nazw gdy będziesz rozszerzał klasę Zend_Registry i dodawał prywatne zmienne.

Przykład 1.6. Uzyskiwanie dostępu do wartości używając składni OO zamiast składni ArrayAccess

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