這篇文章主要為大家展示了php中單例模式,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶大家一起來研究并學(xué)習(xí)一下“php中單例模式”這篇文章吧。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供將樂網(wǎng)站建設(shè)、將樂做網(wǎng)站、將樂網(wǎng)站設(shè)計(jì)、將樂網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、將樂企業(yè)網(wǎng)站模板建站服務(wù),10多年將樂做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。php是一個(gè)嵌套的縮寫名稱,是英文超級(jí)文本預(yù)處理語(yǔ)言,它的語(yǔ)法混合了C、Java、Perl以及php自創(chuàng)新的語(yǔ)法,主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用php開發(fā),因?yàn)閜hp是開源的,從而使得php經(jīng)久不衰。
1.單例模式的由來
類
是對(duì)現(xiàn)實(shí)生活中一類具有共同特征的事物的抽象,通過類的實(shí)例化,產(chǎn)生了許多的對(duì)象,但同時(shí)也產(chǎn)生了大量資源的消耗(例如在連接數(shù)據(jù)庫(kù)
時(shí)連接數(shù)量的限制,又例如在計(jì)算機(jī)中打開資源管理器
卻具有性),由此也產(chǎn)生了對(duì)類的實(shí)例化進(jìn)行了限定的需求,為了保護(hù)資源的性,由此產(chǎn)生了單例模式
。
2.單例模式的定義
定義:?jiǎn)卫J絪ingleton,是一種類的設(shè)計(jì)只會(huì)最多產(chǎn)生一個(gè)對(duì)象的設(shè)計(jì)思想。
3.單例模式的實(shí)例
a.創(chuàng)建一個(gè)空類 。
<?php class Use{ } $a=new Use();//實(shí)例化一個(gè)對(duì)象 ?>
b.能夠多次實(shí)例化類,是產(chǎn)生多個(gè)對(duì)象的原因,所以可以通過私有化構(gòu)造方法
。
<?php class Use{ private function __construct() { echo __FUNCTION__."<br>"; } } ?>
c.私有化構(gòu)造方法
使得實(shí)例化對(duì)象產(chǎn)生的數(shù)目為0,由此可以通過在類的內(nèi)部,通過靜態(tài)方法
調(diào)用構(gòu)造方法,然后將構(gòu)造方法返回至外部。
<?php class Use{ private function __construct() { echo __FUNCTION__."<br>"; } public static function getInstance() { return new self(); } } $s1=Use::getSingleton(); ?>
d.通過上述的方法雖然能夠?qū)嵗瘜?duì)象,但是同時(shí)也將構(gòu)造方法的使用權(quán)限外放出去。如果想要該方法只返回一個(gè)對(duì)象,就得保證類內(nèi)部有辦法存著某個(gè)產(chǎn)生的對(duì)象,第一次產(chǎn)生新的,后面返回舊的。此時(shí)需要使用靜態(tài)屬性。
<?php class Use{ private static $object = NULL;//初始化為NULL,沒有對(duì)象 private function __construct() { echo __FUNCTION__."<br>"; } public static function getInstance() { //判斷類內(nèi)部的靜態(tài)屬性是否存在對(duì)象 if(!(self::$object instanceof self)){ //當(dāng)前保存的內(nèi)容不是當(dāng)前類的對(duì)象 self::$object = new self(); } //返回對(duì)象給外部 return self::$object; } } $s1=Use::getSingleton(); ?>
e.此時(shí)可以保證,通過調(diào)用靜態(tài)方法
只得到一個(gè)對(duì)象
。但是依舊可以通過克隆
,不停的實(shí)例化新的對(duì)象,所以可以將克隆
私有化。
<?php class Use{ private static $object = NULL;//初始化為NULL,沒有對(duì)象 private function __construct() { echo __FUNCTION__."<br>"; } public static function getInstance() { //判斷類內(nèi)部的靜態(tài)屬性是否存在對(duì)象 if(!(self::$object instanceof self)){ //當(dāng)前保存的內(nèi)容不是當(dāng)前類的對(duì)象 self::$object = new self(); } //返回對(duì)象給外部 return self::$object; } private function __clone(){} } $s1=Use::getSingleton(); ?>
以上就是關(guān)于“php中單例模式”的內(nèi)容,如果改文章對(duì)你有所幫助并覺得寫得不錯(cuò),勞請(qǐng)分享給你的好友一起學(xué)習(xí)新知識(shí),若想了解更多相關(guān)知識(shí)內(nèi)容,請(qǐng)多多關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
名稱欄目:php中單例模式-創(chuàng)新互聯(lián)
本文鏈接:http://aaarwkj.com/article28/deodcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、企業(yè)網(wǎng)站制作、App開發(fā)、搜索引擎優(yōu)化、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容