Zend_Registry 提供全局物件存儲容器,支援靜態方法、陣列訪問、物件屬性訪問、迭代、繼承擴展等多種用法。本文系統講解所有核心操作與最佳實踐。
Zend_Registry::set('index', $value); // 存儲
$value = Zend_Registry::get('index'); // 讀取
Zend_Registry::isRegistered('index'); // 判斷存在
$registry = new Zend_Registry(array('index' => $value)); // 陣列初始化
Zend_Registry::setInstance($registry); // 設為靜態實例(僅能調用一次)
$registry = Zend_Registry::getInstance(); $registry['index'] = $value; var_dump($registry['index']); // 判斷存在 isset($registry['index']);
需在啟動階段啟用 ArrayObject::ARRAY_AS_PROPS:
$registry = new Zend_Registry(array(), ArrayObject::ARRAY_AS_PROPS); Zend_Registry::setInstance($registry); $registry->tree = 'apple'; echo $registry->tree; // apple
注意:某些 PHP 版本該選項有 Bug,謹慎使用。
$registry = Zend_Registry::getInstance();
foreach ($registry as $index => $value) {
echo "Registry index $index contains:\n";
var_dump($value);
}
Zend_Registry::_unsetInstance(); // 危險:所有數據永久丟失 // 之後可重新 setClassName 或 setInstance
Zend_Registry::setClassName('My_Registry'); // 必須繼承 Zend_Registry
// 建議在 bootstrap 階段調用
$registry->clearVars(); // 清除所有賦值
更多 Zend 相關技術請參考專題:《Zend Framework 入門教程》、《PHP 優秀開發框架總結》、《Yii 框架入門及常用技巧總結》、《ThinkPHP 入門教程》、《PHP 面向對象程序設計入門教程》、《PHP+MySQL 數據庫操作入門教程》及《PHP 常見數據庫操作技巧匯總》。