Zend的Registry機制的使用說明
項目過程中有很多全局變量, 需要全局存儲,是否是使用全局變量來進行存儲?那就弱爆了。Zend使用Registry機制(注冊表)存儲對象和值,是一個存儲對象和值的容器。
Zend_Registry這個類就是做這個目的
代碼示例
Zend_Registry::set('config', $config);
Zend_Registry::get('config');
代碼分析
這兩個函數(shù)是最常用的兩個函數(shù)。我們來看一下這個類
class Zend_Registry extends ArrayObject
這個類繼承自ArrayObject
ArrayObject implements IteratorAggregate , Traversable , ArrayAccess , Serializable , Countable
ArrayObject是一個對象集合,相當于其他語言的泛型集合的概念。
重點了解下void ArrayObject::offsetSet ( mixed $index , mixed $newval ), 這個函數(shù)就是hashtable中的設(shè)置key,value,只是key,value可以是任何類型的。
好了,回到Zend_Registry, 看看set做了些什么事情
set函數(shù)
public static function set($index, $value)
{
$instance = self::getInstance();
$instance->offsetSet($index, $value);
}
一個是實例化Register,另一個是調(diào)用offsetSet方法,將index和value設(shè)置進去。
offset方法很好理解,但是為什么要使用getInstance方法呢?
這里建議大家好好看看,這個是結(jié)合類靜態(tài)方法的單例模式。
我們一般的單例模式寫成:
class A{
private $_instance;
public static function getInstance(){
...
}
protected function __construct(){
...
}
public function setVal(){
...
}
}
$a = A::getInstance();
$a->setVal();
這樣在調(diào)用之前就需要實例化一個類,雖然這個實例化實際上是單例,但感覺還是不舒服
這邊的register就做到了直接使用靜態(tài)方法調(diào)用
A::setVal();
大致的代碼思路我寫了個demo
class A{
private static $_instance;
public static function getInstance(){
if(self::_instance !==null){
return $this->_instance;
} else {
return new A();
}
}
public function __construct(){
}
public static function setV(){
$a = self::getInstance();
$a->setVal();
}
public function setVal(){
...
}
}
A::setV();
實際上就是直接把__construct()放開成為public,然后實例化它
- Zend Framework教程之Zend_Registry對象用法分析
- Zend Framework入門教程之Zend_Config組件用法詳解
- Zend Framework過濾器Zend_Filter用法詳解
- Zend Framework實現(xiàn)自定義過濾器的方法
- Zend Framework校驗器Zend_Validate用法詳解
- Zend Framework常用校驗器詳解
- Zend Framework入門教程之Zend_Session會話操作詳解
- Zend Framework入門教程之Zend_Mail用法示例
- Zend Framework入門教程之Zend_Db數(shù)據(jù)庫操作詳解
- Zend Framework開發(fā)入門經(jīng)典教程
- Zend Framework入門教程之Zend_Registry組件用法詳解
相關(guān)文章
PHP實現(xiàn)使用優(yōu)酷土豆視頻地址獲取swf播放器分享地址
這篇文章主要介紹了PHP實現(xiàn)使用優(yōu)酷土豆視頻地址獲取swf播放器分享地址,即分析優(yōu)酷土豆的視頻頁面地址,從而獲得對應(yīng)的swf播放器分享地址,需要的朋友可以參考下2014-06-06PHP開啟目錄引索+fancyindex漂亮目錄瀏覽帶搜索功能
這篇文章主要介紹了PHP開啟目錄引索+fancyindex漂亮目錄瀏覽帶搜索功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09laravel 配置路由 api和web定義的路由的區(qū)別詳解
今天小編就為大家分享一篇laravel 配置路由 api和web定義的路由的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09yii2.0框架使用 beforeAction 防非法登陸的方法分析
這篇文章主要介紹了yii2.0框架使用 beforeAction 防非法登陸的方法,結(jié)合實例形式分析了yii2.0框架中beforeAction的基本原理、用法及防止非法登陸的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09