圖書評論:PHP中的實用設計模式
對Brandon Savage在PHP中的實用設計模式的評論將包括我對書籍的看法和印象,以及自我出版的方面。非常感謝Brandon給了我評論副本。
設計模式是關於常見問題的常見解決方案。鑰匙要點……它們是概念,而不是藍圖;想法,未完成設計。
…他們為原本困難的情況增添了清晰度。
- Brandon Savage,PHP中的實用設計模式
Brandon Savage的“ PHP中實用設計模式”
- 為理解和實施PHP中的設計模式提供了綜合指南,重點是針對常見問題的共同解決方案。該書涵蓋了廣泛的模式,每個模式都用潛在的代碼實現進行了解釋,這使其成為中級開發人員的寶貴資源。
- > >對本書的內容受到讚揚,評論指出了一些缺點。其中包括缺乏對某些模式的解釋,例如註冊表模式,以及讀者熟悉高級概念和第三方內容的假設。該評論還批評了本書在MVC應用程序中的模型方法,並且缺乏針對域模型模式的實際示例。
- >評論重點介紹了本書缺乏專業指導,語言錯誤和偶爾在代碼樣本中的奇數的挑戰。儘管存在這些問題,但建議該書適用於希望研究設計模式的中級開發人員,但對於需要首先掌握基本概念的初學者。
- content
>如果我在Dreyfus模型術語中表達了重要的事情,他聲稱這本書將在那裡將新手變成一個勝任的級別的開發人員,而不會使他們遭受高級初學者的錯誤,而實際上,這種學習方法並非完全可能- 那是可能的- 只是人類知識獲取過程的工作原理。
>從TOC中可能不會過分明顯,因此本書中解釋的模式是:
>- (摘要)工廠模式
- singleton模式
- 構建器模式
- 裝飾器圖案
- 適配器模式
- 外觀模式
- 策略模式
- 介質模式
- 觀察者模式
- 責任鏈模式
- 迭代器模式
- 複合模式
- MVC模式
- 域模型模式
- 活動記錄模式
- 前控制器模式
[…],例如,註冊表模式(本書中未涵蓋)…”。為什麼不呢?註冊表模式是一種流行的模式,即使不是當今不完全推薦的,也很容易解釋。 > 按模式進行模式,每個圖案都很好地解釋了,大多數隨後是代碼示例,證明了它們的潛在實現,儘管我確實對Cache的出廠模式示例有一個困惑。
在不同的緩存示例(APC和memcache)的示例中實現了該模式,並且兩者都通過工廠產生,該工廠都注入了任何服務需要緩存組件中。
> 另一方面,我絕對喜歡複合模式的解釋及其在非常有趣的樹示例上的演示- 作者構建了一棵複合樹,具有任意數量的嵌套節點級別,該級別非常適用於菜單構建,層次結構,以及更多- 我對裝飾圖案的解釋感到特別興奮。它是以一種非常平易近人的方式完成的,並且以良好的可用示例進行。尤其是這種模式是我一直很難在被問到時用藍色解釋的人,而且我還沒有找到比本書更好的細分。
>忽略了模型
在本書的一個實例中,布蘭登說,模型是MVC應用程序中最重的舉昇機,其中包含所有業務邏輯和驗證代碼。這是我無法接受的陳述 - 我可以想到一個不正確的例子:拉拉維爾(Laravel)。隨著Laravel 5的出現並添加表格請求,這些模型將增長更輕。
>
“在整本書中,布蘭登在沒有鏈接到它的情況下(四個幫派)提到了高級概念(ORM,繼承,依賴注入)和第三方內容,假設讀者熟悉這一切。尤其是四個場合提到了四個團伙,並且至少可以與設計模式的鏈接使用 - 否則“新手”和“高級初學者”讀者只會在混亂中瀏覽一下句子。創建好的模型是任何開發人員鏟球最複雜的任務之一。 長期以來,Zend Framework文檔認為沒有Zend_model類,因為創建模型是應用程序開發過程的大部分。 要創建zend_model將是假設每個人都可以或想使用相同的模型結構,這是不可能的,這是我本章中未包含任何代碼的相同原因。 >這確實有意義,但以最簡單的方式體現了價值,網關和存儲對象,這對首次被引入域模型模式的人們非常有益。我認為,在本書中,域模型模式過於忽視,並且太過理論上了。
知識的詛咒
在其他情況下,段落結構的編寫方式遠遠超出了新手對中級用戶的理解水平:
>這是一個古老的問題,許多開發人員一直都在努力:如果我努力顛倒依賴關係而不是在課堂內創建對象,那麼我該如何創建在運行時需要的依賴項,可以一定要注入?
>這不是讀者所消耗的水平,他們需要這本書熟悉模式。完全了解這句話的讀者可能已經完全熟悉了書中的所有模式,從而使真正的目標受眾質疑。我相信這是由於薩維奇先生遭受了所謂的“知識詛咒”的困擾。
wikipedia將其定義為:
自我出版知識的詛咒是一種認知偏見,它導致更有信息的各方發現從較小的政黨的角度考慮問題非常困難。 在沒有正式訓練以傳達自己所知道的東西的專業人士中,知識的詛咒是一個非常普遍的事情,但也確實會隨著時間,經驗和反饋而失去影響。這也是為什麼我們在站點點鼓勵人們就帖子提供誠實的反饋,這就是為什麼我們試圖使每個新出版物都更簡單,更簡化的事情。沒有人對詛咒免疫 - 有些人受到它的影響更大。
>
的瘟疫
>近年來,自我出版似乎確實脫穎而出。那些不訴諸LeanPub的人像Brandon一樣完全獨奏。儘管這種方法確實確實加快了過程,並允許專家以令人震驚的快速速度將高質量的內容放在感興趣的各方的手中,但它還允許更多的錯誤,不良內容和錯別字可以通過。
不幸的是,困擾其他自我出版作家的大多數問題也困擾著這本書。缺乏經驗豐富的編輯,似乎沒有關於內容,形式甚至語法和句法準確性的指導,這是一種經常弄亂的語言的人。
結論
作為高級用戶,我以前對本書中解釋的大多數(如果不是全部)的模式有所了解。但是,我所經歷的解釋對中級用戶的形成且平易近人,儘管我認為不是較低的技能之一。雖然這本書的內容非常好,而布蘭登(Brandon)非常擅長在代碼中展示該理論的描述,但我覺得這本書整體上太複雜了,對於新手開發人員而言,無法獲得任何明顯的內容。 在我看來,PHP社區一般都患有一種“缺少鏈接”綜合徵,我們擁有絕對的初學者書籍(“這是迴聲,這是一個函數,這是PHP標籤”))))還有像這樣的中級書籍,或任何st魚,瓊斯,哈特耶斯和其他人都推出的,但是有一個中間立場仍然沒有質量的內容,只能通過良好的老式征服“把我扔進去火法。>也就是說,如果您是一個中級開發人員,希望在人們周圍的人們談論他們談論的會議上陷入模式,並從那些尷尬的點點頭,但您不理解一件事情- 一定會得到這本書。如果您是新手,我不建議您購買這個 - 不僅是。首先掌握您的“ Echos”,了解作曲家是什麼,然後將您的牙齒沉入此。
實際上,如果您是高級初學者(初學者應該從非常基礎的開始),但我仍然對您感興趣,我會為您提供鼓掌,並提供以下資源以在您深入研究之前進行查看:
>在可學習的
上,面向對象的php元素>
>面向對象的php- 採用面向對象的PHP:使兩支軍隊互相戰鬥 > Alejandro Gervasio的
- >很棒 - 閱讀這個人曾經寫過的所有內容 作曲家
- MVC
- 內容,我會給書一個4/5,但是考慮到急需的工作似乎已經接近結束,錯字和語言錯誤(儘管公平,但有一個錯別字提交我已經對修復程序進行了污染的github回購)以及我個人認為,很明顯缺乏專業指導以及一些奇怪的奇怪之處,這些奇怪的價值會嵌入到新手中的新手中(在各種代碼樣本中使用數字啟動班級名稱),i i' m結束最終分數為3/5。
php
>中有關實用設計模式的經常詢問的問題>在PHP中使用設計模式的好處是什麼好處?他們提供了提高代碼效率和可維護性的方法。通過使用設計模式,您可以使代碼更加靈活,可重複使用和可理解。它們還使開發人員之間的溝通變得更加容易,因為它們為某些解決方案提供了標準術語。
>裝飾器模式如何在php?
>
>重構在設計模式中的作用是什麼?重構是修改現有代碼以改善其結構而無需更改其功能的過程。在設計模式的背景下,可以使用重構將設計模式實現到現有代碼庫中。這可以提高代碼的可維護性,可讀性和經常性能。 >“ PHP中的實用設計模式”如何幫助理解設計模式? ”提供了PHP中理解和實施設計模式的綜合指南。它提供了各種設計模式的實踐示例和詳細說明,使讀者更容易掌握這些概念並將其應用於自己的項目中。>設計模式僅適用於PHP?
不,設計模式不是PHP獨有的。它們是軟件設計中的概念,可應用於任何面向對象的編程語言。該實現可能因語言而異,但是基本原則保持不變。 >
設計模式如何改善開發人員之間的溝通?設計模式為軟件設計中的某些解決方案提供了標準術語。當開發人員使用這些術語時,他們傳達了一個特定的,充分理解的概念,可以減少誤解並改善溝通。
>>使用設計模式有任何缺點嗎? ,如果不正確使用,它們也可以引入複雜性。過度使用設計模式可能會導致不必要的抽象,並使代碼更難理解和維護。因此,只有在他們真正解決一個反復出現的問題時,才明智地使用它們。
>您的PHP項目是了解您要解決的問題,並確定這是否是設計模式可以解決的重複問題。確定了合適的設計模式後,您可以在代碼中開始實現它。請記住,目標是使您的代碼更有效和可維護,因此請始終牢記簡單性和清晰度。
以上是圖書評論:PHP中的實用設計模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

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

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

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

Dreamweaver CS6
視覺化網頁開發工具

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

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

在PHP中,異常處理通過try,catch,finally,和throw關鍵字實現。 1)try塊包圍可能拋出異常的代碼;2)catch塊處理異常;3)finally塊確保代碼始終執行;4)throw用於手動拋出異常。這些機制幫助提升代碼的健壯性和可維護性。

PHP中有四種主要錯誤類型:1.Notice:最輕微,不會中斷程序,如訪問未定義變量;2.Warning:比Notice嚴重,不會終止程序,如包含不存在文件;3.FatalError:最嚴重,會終止程序,如調用不存在函數;4.ParseError:語法錯誤,會阻止程序執行,如忘記添加結束標籤。

在PHP中,include,require,include_once,require_once的區別在於:1)include產生警告並繼續執行,2)require產生致命錯誤並停止執行,3)include_once和require_once防止重複包含。這些函數的選擇取決於文件的重要性和是否需要防止重複包含,合理使用可以提高代碼的可讀性和可維護性。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

HTTP請求方法包括GET、POST、PUT和DELETE,分別用於獲取、提交、更新和刪除資源。 1.GET方法用於獲取資源,適用於讀取操作。 2.POST方法用於提交數據,常用於創建新資源。 3.PUT方法用於更新資源,適用於完整更新。 4.DELETE方法用於刪除資源,適用於刪除操作。
