您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“web開發中如何實現單態設計模式”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“web開發中如何實現單態設計模式”這篇文章吧。
單態設計模式
一、
二、最終結果是只得到一個對象
1、不能讓用戶在外面new----->封裝構造方法
2、一個對象都得不到---->提供一個方法用來得到對象
3、普通的方法在外部無法訪問--->static靜態方法用來在外部直接訪問方法的作用,使用static修飾
4、方法中可以加判斷---->添加一個屬性
5、普通屬性無法再靜態中使用--->這個屬性也用靜態修飾
<--------------------------單態設計模式代碼----------------------------->
<?php
class A{
static public $link=null;
protected function __construct(){
echo '連接數據成功<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';
}
三、魔術方法
1、__construct() 使用new 關鍵字得到對象的時候自動調用
2、__destruct()對對象銷毀的時候自動調用
3、__set()在沒有權限賦值的時候自動調用
4、__get()沒有權限獲取值的時候自動調用
5、__isset()在沒有權限使用isset的時候自動調用
6、__unset()在沒有權限使用unset函數的時候自動調用
7、__toString()將一個對象當做字符串的時候自動調用
<?php
class A {
//講一個對象當做字符串的時候自動調用
public function __toString(){
//類的說明 必須返回一個字符串
return '當做字符串在此處輸出';
}
}
$a=new A;
echo $a;
8、__invoke()將對象當做函數的時候自動調用
9、__call()調用一個不存在的方法的時候會自動調用
<?php
class A {
//調用一個不存在的方法的時候會自動調用
public function __call($a,$b){
//第一個參數是調用的方法名
echo $a;
//第二個參數是調用時候傳遞的實參集合
var_dump($b);
//跳轉到404頁面
}
}
$p=new A;
echo $p->say(1,2,3,5);
10、__callStatic()調用一個不存在的靜態方法的時候會自動調用
<?php
class A {
static public function __callStatic($a,$b){
//第一個參數是調用的方法名
var_dump($a);
//第二個參數是調用時候傳遞的實參集合
var_dump($b);
}
}
$p=new A;
A::say('哈哈哈哈哈或');
11、__clone()通過clone 關鍵字得到對象的時候自動調用
<?php
class A {
public $name='cline';
public function __clone(){
echo '通過clone關鍵字得到對象的時候自動調用';
}
}
$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()魔術函數 當我們在實例化一個對象的時候發現類不存在會自動調用此函數 補救措施
<?php
function __autoload($className){
echo $className.'<br/>';
//自動加載內容
include'./'.$className.'.class.php';
}
$w=new A;
以上是“web開發中如何實現單態設計模式”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。