PHP 常用設計模式 魔術方法

2021-09-14 01:45:47 字數 2117 閱讀 7158

實現單例模式目的

在應用程式呼叫的時候,只能獲得乙個物件例項。典型應用如資料庫連線。
單例模式特點

1.只能有乙個例項。

2.必須自行建立這個例項。

3.必須給其他物件提供這一例項

4.必須存在乙個私有的構造方法,防止外部**new 建立物件

**

class single 

static public $instance;//宣告乙個靜態變數(儲存在類中唯一的乙個例項)

static public function getinstance()

public function setname($n)

public function getname()

}$oa = single::getinstance();

$ob = single::getinstance();

$oa->setname('hello world');

$ob->setname('good morning');

echo $oa->getname();//good morning

echo $ob->getname();//good morning

實現工廠模式目的

乙個類通過本身的靜態方法來,例項化乙個類並返回乙個例項物件;

應用場景:

連線資料庫,可以使用mysql 、mysqli、pdo,根據不同引數配置使用不同的資料庫操作類

方便未來擴充套件,設計成工廠模式。定乙個專門生產閘道器介面的工廠,抽象出來,

做成介面形式,讓所有的子類都要實現它的介面。

以後加乙個支付方式,要使用哪一種支付方式,改變一下引數即可。

工廠模式特點

通過呼叫物件的乙個靜態方法,返回乙個例項物件。
**

<?php

//共同介面

inte***ce db

/** *@class 服務端開發(不知道誰將會被呼叫)

* */

class dbmysql implements db

}class dbsqlite implements db

}/**

*@定義乙個工廠介面

*/inte***ce factory

/** *@實現這個介面

*/class mysqlfactory implements factory

}class sqlitefactory implements factory

}/**

*@新增乙個oracle

*/class oraclefactory implements factory

}class oracledb implements db

}//客戶端呼叫

$fact = new mysqlfactory();//使用乙個mysql工廠造乙個mysql連線

$db = $fact->createdb();

$db->conn();

$fact = new sqlitefactory();

$db = $fact->createdb();

$db->conn();

$fact = new oraclefactory();

$db = $fact->createdb();

$db->conn();

魔術方法

__construct(),__desctruct()

_construct()和析構函式  __desctruct()分別在物件建立和銷毀時被呼叫
__call

當呼叫乙個不存在的成員方法的時候觸發
__tostring

當echo乙個物件的時候呼叫

返回乙個字串,該字串就會被列印出來,這個字串需要自己定製

__get()

讀取不可訪問或不存在屬性的值時,__get()會被呼叫 定義function __get($name)

php常用魔術方法

魔術方法和建構函式 construct和複製物件時自動呼叫的函式 clone相似,都是在執行某一操作時會被呼叫,通常和乙個關鍵字相連。通常情況下在類中會定義私有屬性,這是為了保護資料而使用的措施,但是也給我們帶來了麻煩。想要修改它們的值時,是通過呼叫我們定義的介面函式來完成的。每次需要修改變數都要呼...

php常用魔術方法

1.call 當使用乙個未定義的方法時呼叫此方法 2.autoload 使用尚未被定義的類時自動呼叫。通過此函式,指令碼引擎在 php 出錯失敗前有了最後乙個機會載入所需的類加粗樣式 3.construct 當乙個物件被建立時呼叫此方法,好處是可以使構造方法有乙個獨一無二的名稱,無論它所在的類的名稱...

PHP常用魔術方法總結

常用的魔術方法有 tostring call autoload clone get set isset unset 1.tostring 用於定義輸出物件引用時呼叫 常用於列印一些物件的資訊 必須有返回值 eg 有乙個 persion類 persion per new persion echo pe...