資源描述:
《對(duì)象注冊(cè)表(Zend_Registry)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第7章對(duì)象注冊(cè)表(Zend_Registry)對(duì)象注冊(cè)表(Registry)是ZendFramework框架中一種可以作為值與對(duì)象存儲(chǔ)容器的特殊類。將值或?qū)ο蟠鎯?chǔ)在對(duì)象注冊(cè)表中就可以在程序中隨時(shí)隨地的調(diào)用??梢园褜?duì)象注冊(cè)表簡(jiǎn)單地理解為一種特殊的全局變量。本章來介紹在具體編程過程中,如何使用對(duì)象注冊(cè)表組件。7.1創(chuàng)建對(duì)象注冊(cè)表要使用對(duì)象注冊(cè)表,首先要?jiǎng)?chuàng)建一個(gè)Registry對(duì)象。可以通過兩種方法來實(shí)現(xiàn)創(chuàng)建對(duì)象注冊(cè)表并對(duì)其進(jìn)行訪問。一種是使用傳統(tǒng)的new關(guān)鍵字來為類實(shí)例化一個(gè)對(duì)象;另一種是使用類的set()方法來創(chuàng)建。下面分別對(duì)這兩種方法進(jìn)行介
2、紹。7.1.1為Registry實(shí)例化一個(gè)對(duì)象用傳統(tǒng)的new關(guān)鍵字來為Zend_Registry類實(shí)例化對(duì)象,與使用普通類與對(duì)象一樣。對(duì)象建立之后,就可以使用對(duì)象的屬性與方法。在為Zend_Registry類實(shí)例化對(duì)象時(shí)需要指定鍵與值,其格式如以下代碼所示。$registry=newZend_Registry(array('index'=>$value));7.1.2使用set()方法為對(duì)象注冊(cè)表設(shè)置值除了使用new關(guān)鍵字創(chuàng)建對(duì)象注冊(cè)表之外,還可以通過Zend_Registry類的靜態(tài)方法set(),來為對(duì)象注冊(cè)表設(shè)置值。該方法的語法格式如
3、以下代碼所示。Zend_Registry::set('index','value')使用set()方法為對(duì)象注冊(cè)表設(shè)置內(nèi)容時(shí)需要注意的是,采用這種方法設(shè)置的值需要通過get()方法來獲取其內(nèi)容。該方法的使用格式如以下代碼所示。Zend_Registry::get('index')7.2訪問對(duì)象注冊(cè)表創(chuàng)建對(duì)象注冊(cè)表后,就可以通過不同的方法對(duì)其進(jìn)行訪問了。在ZendFramework中,提供了兩種訪問方式。它們分別為數(shù)組方式和對(duì)象方式。本節(jié)將詳細(xì)介紹這兩種方式。7.2.1用數(shù)組的方式訪問使用new關(guān)鍵字為Registry類實(shí)例化對(duì)象之后,就可以
4、采用數(shù)組的方式來訪問對(duì)象注冊(cè)表的內(nèi)容。這種方法在7.1.1小節(jié)已經(jīng)涉及。而使用set()方法直接為對(duì)象注冊(cè)表設(shè)置值之后,也可以以數(shù)組的形式對(duì)其內(nèi)容進(jìn)行訪問。代碼7-2.php中的方法說明了這樣的方法。這里就不再贅述。7.2.2用對(duì)象的方式訪問對(duì)象注冊(cè)表在創(chuàng)建之后,可以通過方法setInstance()將其轉(zhuǎn)化為靜態(tài)對(duì)象,這樣就可以以對(duì)象的方式對(duì)其進(jìn)行訪問。該方法的語法格式如以下代碼所示。Zend_Registry::setInstance($registry)Zend_Registry::getInstance()7.3編輯對(duì)象注冊(cè)表對(duì)象注
5、冊(cè)表除了常用的對(duì)其創(chuàng)建與訪問之外,有時(shí)還需要對(duì)其進(jìn)行其他操作,如查詢索引是否存在、刪除靜態(tài)注冊(cè)表等操作。本節(jié)介紹對(duì)象注冊(cè)表的這兩種操作。7.3.1查詢索引是否存在在使用對(duì)象注冊(cè)表時(shí),判斷某個(gè)索引是否已經(jīng)設(shè)置相應(yīng)的值是很有必要的。如果為已經(jīng)有值的索引設(shè)置值,則原始值就會(huì)被覆蓋,這種結(jié)果顯然是很不利的。Registry類提供了靜態(tài)方法isRegistered(),來實(shí)現(xiàn)對(duì)索引是否有值的判斷。該方法的語法格式如以下代碼所示。Zend_Registry::isRegistered($index)7.3.2刪除靜態(tài)注冊(cè)表在實(shí)際應(yīng)用過程中出于某種需要,
6、可能要將靜態(tài)注冊(cè)表刪除。ZendFramework提供了方法Zend_Registry::_unsetInstance()來執(zhí)行這一操作。該方法的語法格式如以下代碼所示。Zend_Registry::_unsetInstance($registry)7.4小結(jié)對(duì)象注冊(cè)表類是ZendFramework提供的一個(gè)很有用的類。通過使用對(duì)象注冊(cè)表可以實(shí)現(xiàn)很多普通變量所無法實(shí)現(xiàn)的功能。在使用時(shí)需要注意兩個(gè)問題,一是使用前最好先判斷索引是否存在,這樣可以避免因索引不存在而出現(xiàn)的問題。二是刪除靜態(tài)注冊(cè)表時(shí)要確認(rèn)不再需要。