php設計模式之迭代器模式
1.概念介紹
1.迭代器模式:在不需要了解內部實作的前提下,遍歷一個聚合物件的內部元素。
2.相較於傳統的程式模式,迭代器模式可以隱藏遍歷元素的所需的操作。
3.這裡介紹的迭代器需要實作(implements)PHP SPL 裡面的Iterator
,需要實作5個方法(current, next,valid,rewid,key)
2.程式碼展示
<code><span>namespace</span><span>brave</span><span>class</span><span>AllUser</span><span>implements</span> \<span>Iterator</span> { //所有<span>user</span>的<span>id</span><span>protected</span> $<span>ids</span>; <span>//保存数据库查询的对象,如果有就不需要在次查询了,可使用注册模式</span><span>protected</span><span>$data</span> = <span>array</span>(); <span>//表示迭代器当前的位置</span><span>protected</span><span>$index</span>; <span><span>function</span><span>__construct</span><span>()</span> {</span><span>$db</span> = Factory::getDatabase(); <span>$result</span> = <span>$db</span>->query(<span>"select id from user"</span>); <span>$this</span>->ids = <span>$result</span>->fetch_all(MYSQLI_ASSOC); } <span>//获取当前用户对象</span><span><span>function</span><span>current</span><span>()</span> {</span><span>$id</span> = <span>$this</span>->ids[<span>$this</span>->index][<span>'id'</span>]; <span>return</span> Factory::getUser(<span>$id</span>); } <span>//进入下一个索引</span><span><span>function</span><span>next</span><span>()</span> {</span><span>$this</span>->index ++; } <span>//检查当前是否有数据</span><span><span>function</span><span>valid</span><span>()</span> {</span><span>return</span><span>$this</span>->index < count(<span>$this</span>->ids); } <span>//使当前的指针回到开始位置</span><span><span>function</span><span>rewind</span><span>()</span> {</span><span>$this</span>->index = <span>0</span>; } <span>//获取当前的索引值</span><span><span>function</span><span>key</span><span>()</span> {</span><span>return</span><span>$this</span>->index; } }</code>
3.執行程式碼
<code><span>//迭代器模式实例</span><span>$users</span> = <span>new</span> AllUser(); <span>foreach</span> (<span>$users</span><span>as</span><span>$user</span>) { var_dump(<span>$user</span>); <span>echo</span><span>'<hr>'</span>; }</code>
版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。
以上就介紹了php設計模式迭代器模式,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

index.html代表網頁的首頁文件,是網站的預設頁面。當使用者造訪一個網站時,通常會先載入index.html頁面。 HTML(HypertextMarkupLanguage)是一種用來建立網頁的標記語言,index.html也是一種HTML檔。它包含網頁的結構和內容,以及用於格式化和佈局的標籤和元素。下面是一個範例的index.html程式碼:<

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安

C語言return的用法有:1、對於傳回值類型為void的函數,可以使用return語句來提前結束函數的執行;2、對於傳回值型別不為void的函數,return語句的作用是將函數的執行結果傳回給呼叫者;3、提前結束函數的執行,在函數內部,我們可以使用return語句來提前結束函數的執行,即使函數並沒有回傳值。

為什麼截圖工具在Windows11上不起作用了解問題的根本原因有助於找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已開啟:這可以防止截圖工具開啟。應用程式損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅動程式:不相容的驅動程式可能會幹擾截圖工具。來自其他應用程式的干擾:其他正在運行的應用程式可能與截圖工具衝突。憑證已過期:升級過程中的錯誤可能會導致此issu簡單的解決方案這些適合大多數用戶,不需要任何特殊的技術知識。 1.更新視窗與Microsoft應用程式商店應用程

原始碼:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}#輸出上述程式碼的輸出可以簡單地得出結論:return在finally之前執行,我們來看下字節碼層面上發生了什麼事情。下面截取case1方法的部分字節碼,並且對照源碼,將每個指令的含義註釋在

第1部分:初始故障排除步驟檢查蘋果的系統狀態:在深入研究複雜的解決方案之前,讓我們先從基礎知識開始。問題可能不在於您的設備;蘋果的伺服器可能會關閉。造訪Apple的系統狀態頁面,查看AppStore是否正常運作。如果有問題,您所能做的就是等待Apple修復它。檢查您的網路連接:確保您擁有穩定的網路連接,因為「無法連接到AppStore」問題有時可歸因於連接不良。嘗試在Wi-Fi和行動數據之間切換或重置網路設定(「常規」>「重置」>「重置網路設定」>設定)。更新您的iOS版本:

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

在Docker中,掛載目錄的權限問題通常可以透過以下方法解決:使用-v參數指定掛載目錄時新增權限相關的選項。可以透過在掛載的目錄後面新增:ro或:rw來指定掛載目錄的權限,分別表示只讀和讀寫權限。例如:dockerrun-v/host/path:/container/path:roimage_name在Dockerfile中定義USER指令來指定容器中執行的用戶,以確保容器內部的操作符合權限要求。例如:FROMimage_name#CreateanewuserRUNuseradd-ms/bin/
