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

المطورون الذين يرديون الأضافة إلى امكانيات الـ registry , يمكنهم إستخدام هذه الدالة. هذا الـ method يسمح للمطورين بأن يورثوا من Zend_Registry, يشمل إضافة methods بديلة لـ ()offsetGet و ()offsetExists, مثل ()has و ()getval و ()setval .. إلخ., عن طريق إنشاء نسخة من Zend_Registry subclass فى كود الـ bootstrap, ثم بعدها تمرير هذه النسخة إلى ()initRegistry, قبل أن يتم إستخدام أى methods لها علاقة بالـ registry. لاحظ أن ()intiRegistry يمكن إستخدامها مرة واحدة, و ذلك لتفادى مسح محتويات الـ registry بالخطأ بعد الـ initialization. ايضاً, بإستخدام ()Zend::registry or ()Zend::register يتم إستدعاء ()Zend::initRegistry تلقائياً, إن لم يكن تم إستدعائه من قبل.

مثال 1.5. register() / offsetSet() Example

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

# in your bootstrap code:

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

# now the normal ()Zend::registry, ()Zend::register, and ()Zend::isRegistered work as expected
?>

إستخدم الـ constant المسمى ArrayObject::ARRAY_AS_PROPS فى الـ constractor لتسمح بالوصول إلى القيم بإستخدام registry->$indexName$, بالإضافة إلى registry[$indexName]$. مع ذلك, إنتبه إلى التضارب بين الأسماء, إن كنت تستخدم class يرث من Zend_Registry و قد اضفت إليه private variables.

مثال 1.6. الوصول إلى القيم بإستخدام الصيغة الكائنية بدلا من صيغة الـ ArrayAccess

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