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.