本文目錄一覽:
php中有哪些設計模式,舉例說明應用場景
PHP 一般有五種常見的設計模式
工廠模式
它具有創建對象的某些方法。可以使用工廠類創建對象,而不直接使用 new。
例如:
?php
interface IUser
{
function getName();
}
class User implements IUser
{
public function __construct( $id ) { }
public function getName()
{
return “Jack”;
}
}
class UserFactory
{
public static function Create( $id )
{
return new User( $id );
}
}
$uo = UserFactory::Create( 1 );
echo( $uo-getName().”\n” );
?
另外四種是:觀察者模式,單元素模式,命令鏈模式,策略模式。例子可以百度一搜。
怎麼理解php中的設計模式
1、單例模式:PHP中的對象生存期間是從該腳本開始一直到該腳本結束為止,因此PHP的單例模式只是在一個頁面中(這裡可能包含很多其他頁面,不是狹義的單頁面)多次用到該對象時才會起作用,多次用到時不去重複的new對象(多個人做一個項目時,難免會碰到一次請求中多次實例一個對象的情況),將不會耗費不必要的資源(數據控連接操做效果很明顯),還有一點就是可以保證整個腳本中都是同一個對象,這種模式是怎麼實現的呢,他的實現有幾個要注意的點:
a. 首先就是要將__construct()方法定義為私有方法,這樣就不能通過new來得到一個新的實例了,單例模式不能在外部進行實例化,這能字自身內部進行實例化;
PHP設計模式之單例模式
單例模式
:使得類的一個對象成為系統中的唯一實例.
PHP中使用單例模式最常見的就是資料庫操作了。避免在系統中有多個連接資料庫的操作,浪費系統資源的現象,就可以使用單例模式。每次對資料庫操作都使用一個實例。
簡單示例
class
AClass
{
//
用來存儲自己實例
public
static
$instance;
//
私有化構造函數,防止外界實例化對象
private
function
__construct()
{}
//
私有化克隆函數,防止外界克隆對象
private
function
__clone()
{}
//
靜態方法,單例訪問統一入口
public
static
function
getInstance()
{
if
(!(self::$instance
instanceof
self)){
self::$instance
=
new
self();
}
return
self::$instance;
}
//
test
public
function
test()
{
return
“done”;
}
//
私有化克隆函數,防止外界克隆對象
private
function
__clone()
{}
}
class
BClass
extends
AClass{
}
//
獲取實例
$aclass
=
AClass::getInstance();
$bclass
=
BClass::getInstance();
//
調用方法
echo
$aclass-test();
對一些比較大型的應用來說,可能連接多個資料庫,那麼不同的資料庫公用一個對象可能會產生問題,比如連接句柄的分配等,我們可以通過給$instance變成數組,通過不同的參數來控制
簡單示例
class
DB
{
//
用來存儲自己實例
public
static
$instance
=
array();
public
$conn;
//
私有化構造函數,防止外界實例化對象
private
function
__construct($host,
$username,
$password,
$dbname,
$port)
{
$this-conn
=
new
mysqli($host,
$username,
$password,
$dbname,
$port);
}
//
靜態方法,單例訪問統一入口
public
static
function
getInstance($host,
$username,
$password,
$dbname,
$port)
{
$key
=
$host.”:”.$port;
if
(!(self::$instance[$key]
instanceof
self)){
self::$instance[$key]
=
new
self($host,
$username,
$password,
$dbname,
$port);#實例化
}
return
self::$instance[$key];
}
//query
public
function
query($ql)
{
return
$this-conn-query($sql);
}
//
私有化克隆函數,防止外界克隆對象
private
function
__clone()
{}
//釋放資源
public
function
__destruct(){
$this-conn-close();
}
}
PHP中怎樣創建一個空對象
1、打開php的編輯器,進入主頁面,首先我們新建好一個php文件,然後寫上注釋內容,這是編程的良好習慣。
2、在php中創建一個類使用的是class這個函數來執行,格式:class 類的名稱{}。如:class test4{}。
3、在類的內部寫上新建變數。var $name。
4、新建一個函數。function myname($mingzi){$this-name=$mingzi;}。
5、然後通過new這個函數實例化這個對象。
6、將這個實例化的對象列印出來看看。
php中顯示數組與對象的實現代碼
1、
使用
print_r
(
$array/$var
)
是列印的意思,而r則取自Array的單詞,那麼該函數的功能就是列印數組內容,它既可以列印數組內容,也可以列印普通的變數。
print_r
($_REQUEST)
;
print_r
($_GET)
;
/*
列印使用GET方法傳遞的表單內容*/
print_r($_POST)
;
/*
列印使用表單POST方法傳遞過的數組內容*/
2、
使用
var_dump
($object/$array/$var)
var
代表變數(Variable),變數包括對象、數組以及標量變數,dump有倒出之意,加在一塊,就是將變數或對象的內容全部輸出出來。
var_dump($DB)
;
/*列印$DB資料庫連接對象的內容*/
var_dump($fileHandle)
;
/*列印文件句柄對象的內容*/
var_dump($Smarty)
;
/*列印Smarty模板對象*/
3、
使用
var_export($object/$array/$var)
輸出或返回一個變數的字元表示。此函數返回關於傳遞給函數的變數的結構信息,它和print_r()類似,不同的是其返回的表示是合法的PHP代碼。可以通過將函數的第二個參數設置為TRUE,從而返回變數的表示。
例如:
複製代碼
代碼如下:
?php
$a
=
array
(
1,2,
array(“a”,”b”,”c”))
;
var_export
($a)
;
echo
“br”
;
$v
=
var_export
(
$a
,
TRUE)
;
echo
$v
;
?
上例中,$v
=
var_export
(
$a
,
TRUE)
表示返回的是PHP的源代碼,可以直接用PHP腳本的數組文件中。
相關說明:
以上三個函數都可以列印對象的值、系統函數值以及數組的內容;
△
echo
、print、printf可以列印變數內容,但不能顯示數組及系統超級變數數組;
△
print_r
和
var_dump不僅可以列印數組、標量變數,還可以列印對象的內容;
△
var_dump語句不僅能列印變數、數組內容,還可以顯示布爾變數和資源(Resource)的內容;
△
var_export
函數返回關於傳遞給該函數的變數的結構信息,和
var_dump()函數類似,不同的是其返回的內容是合法的PHP代碼。
原創文章,作者:SNNL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134220.html