PHP設計模式

2022-09-08 13:09:13 字數 1986 閱讀 4290

單例模式(singleton)

/*

** * class singleton 單例模式

* 單例類不能再其它類中直接例項化,只能被其自身例項化。它不會建立例項副本,而是會向單例類內部儲存的例項返回乙個引用。

* 1.私有的建構函式、轉殖函式,防止外部**new、clone

* 2.私有的靜態的成員變數來儲存類的例項

* 3.公共的靜態函式來訪問類的例項 */

class

singleton

return self::$instance

; }

private

function

__construct()

private

function

__clone()

}$a = singleton::getinstance();

$b = singleton::getinstance();

/*判斷兩個類是否為同乙個類

*/echo

$a === $b ? 1 : 0; //

1exit;

工廠模式

註冊模式

介面卡模式

觀察者模式

依賴注入模式

依賴注入di、控制反轉ioc、反射

控制反轉ioc是一種思想,依賴注入di是實施這種思想的方法

面向介面程式設計

使用時例項化並建立連線

構造器注入、setter、介面注入

容器模式

迭代器iterator

迭代器實際是乙個實現了iterator的類,可以用foreach進行遍歷。

1

<?php

2class sample implements

iterator

8public

function

current

()12

public

function

key()

16public

function

next

()20

public

function

rewind

()23

public

function send ( $value)27

}28public

function

valid ()32}

33$sample = new sample([1,2,3]);

34foreach ($sample

as$k =>$v

)>>>>> valid current key next

可以看到foreach 是先呼叫valid判斷迭代器是否有效,然後再呼叫current獲取當前值,同時呼叫next移動key到指向下乙個值(輸出key是因為 $k=>$v的緣故)。

生成器生成器提供了一種更容易的方法來實現簡單的物件迭代,相比較定義類實現 iterator 介面的方式,效能開銷和複雜性大大降低。

生成器允許你在 foreach **塊中寫**來迭代一組資料而不需要在記憶體中建立乙個陣列, 那會使你的記憶體達到上限,或者會佔據可觀的處理時間。

相反,你可以寫乙個生成器函式,就像乙個普通的自定義函式一樣, 和普通函式只返回一次不同的是, 生成器可以根據需要 yield 多次,以便生成需要迭代的值。

php 將會在每次需要值的時候呼叫生成器函式,並在產生乙個值之後儲存生成器的狀態,這樣它就可以在需要產生下乙個值的時候恢復呼叫狀態。

1

<?php

2function

gen_one_to_three() 7}

8$generator =gen_one_to_three();

9foreach ($generator

as$value

) 12

var_dump($generator); //

實際上是generator物件

php設計 PHP常用設計模式

1 單例模式指在整個應用中只有乙個物件例項的設計模式 class single public rand static private instance 類直接呼叫 final private function construct private防止外部new this rand mt rand 1,...

PHP設計模式 工廠設計模式

工廠模式,如其名稱一樣,就是乙個工廠,用於建立產品。使用工廠模式的好處就是請求者只需要發出請求,具體的例項化過程交給工廠模式,省去了new的過程。並且如果後期開發,類名發生變化,只需要調整工廠模式中一行new相關 不需要修改一大堆 最簡單的工廠模式,實際上就是乙個switch case結構,通過傳入...

php設計模式

php設計模式介紹 導言 php設計模式介紹 第一章 程式設計慣用法 php設計模式介紹 第二章 值物件模式 php設計模式介紹 第三章 工廠模式 php設計模式介紹 第四章 單條模式 php設計模式介紹 第五章 註冊模式 php設計模式介紹 第六章 偽物件模式 php設計模式介紹 第七章 策略模式...