溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

web開發(fā)中如何實現(xiàn)單態(tài)設(shè)計模式

發(fā)布時間:2021-10-19 09:19:29 來源:億速云 閱讀:95 作者:小新 欄目:web開發(fā)

這篇文章主要為大家展示了“web開發(fā)中如何實現(xiàn)單態(tài)設(shè)計模式”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“web開發(fā)中如何實現(xiàn)單態(tài)設(shè)計模式”這篇文章吧。

            單態(tài)設(shè)計模式

一、

二、最終結(jié)果是只得到一個對象

  1、不能讓用戶在外面new----->封裝構(gòu)造方法

  2、一個對象都得不到---->提供一個方法用來得到對象

  3、普通的方法在外部無法訪問--->static靜態(tài)方法用來在外部直接訪問方法的作用,使用static修飾

  4、方法中可以加判斷---->添加一個屬性

  5、普通屬性無法再靜態(tài)中使用--->這個屬性也用靜態(tài)修飾

<--------------------------單態(tài)設(shè)計模式代碼----------------------------->

<?php

class A{

static public $link=null;

protected function __construct(){

echo '連接數(shù)據(jù)成功<br/>';

}

static public function getConnect(){

if(is_null(self::$link)){

self::$link= new A;

}

return self::$link;

}

}

//$p=new A;

//$p1=new A;

$p=A::getConnect();

$p1=A::getConnect();

if($p === $p1){

echo'yes';

}else{

echo'no';

}

三、魔術(shù)方法

 1、__construct() 使用new 關(guān)鍵字得到對象的時候自動調(diào)用

 2、__destruct()對對象銷毀的時候自動調(diào)用

 3、__set()在沒有權(quán)限賦值的時候自動調(diào)用

 4、__get()沒有權(quán)限獲取值的時候自動調(diào)用

 5、__isset()在沒有權(quán)限使用isset的時候自動調(diào)用

 6、__unset()在沒有權(quán)限使用unset函數(shù)的時候自動調(diào)用

 7、__toString()將一個對象當(dāng)做字符串的時候自動調(diào)用

<?php

class A {

//講一個對象當(dāng)做字符串的時候自動調(diào)用

public function __toString(){

//類的說明  必須返回一個字符串

return '當(dāng)做字符串在此處輸出';

}

}

$a=new A;

echo $a;

 8、__invoke()將對象當(dāng)做函數(shù)的時候自動調(diào)用

 9、__call()調(diào)用一個不存在的方法的時候會自動調(diào)用

<?php

class A {

    //調(diào)用一個不存在的方法的時候會自動調(diào)用

public function __call($a,$b){

//第一個參數(shù)是調(diào)用的方法名

echo $a;

//第二個參數(shù)是調(diào)用時候傳遞的實參集合

var_dump($b);

//跳轉(zhuǎn)到404頁面

}

}

$p=new A;

echo $p->say(1,2,3,5);

10、__callStatic()調(diào)用一個不存在的靜態(tài)方法的時候會自動調(diào)用

<?php

class A {

static public function __callStatic($a,$b){

//第一個參數(shù)是調(diào)用的方法名

var_dump($a);

//第二個參數(shù)是調(diào)用時候傳遞的實參集合

var_dump($b);

}

}

$p=new A;

A::say('哈哈哈哈哈或');

11、__clone()通過clone 關(guān)鍵字得到對象的時候自動調(diào)用

<?php

class A {

public $name='cline';

public function __clone(){

echo '通過clone關(guān)鍵字得到對象的時候自動調(diào)用';

}

}

$a=new A;

$a->name='lisa';

//取別名

$b=$a;

var_dump($b);

//clone 會得到一個新對象

$p=clone $a;

var_dump($p);

if($a === $p){

echo 'Y';

}else{

echo'N';

}

12、__autoload()魔術(shù)函數(shù) 當(dāng)我們在實例化一個對象的時候發(fā)現(xiàn)類不存在會自動調(diào)用此函數(shù) 補救措施

<?php

function __autoload($className){

echo $className.'<br/>';

//自動加載內(nèi)容

include'./'.$className.'.class.php';

}

$w=new A;

以上是“web開發(fā)中如何實現(xiàn)單態(tài)設(shè)計模式”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

web
AI