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.