1、什麼是組件組件 組件
組件組件
小型:小巧玲瓏,只包含解決某個問題所需的最少程式碼;
合作:PHP組件之間可以良好合作,組合在一起實現大型專案;測試良好:本身提供測試,而且有充足的測試覆蓋度;
文件完善:應該提供完善的文檔,能讓開發者輕易安裝、理解和使用。 2、組件 vs 框架
選擇框架時,我們看中的是框架的未來,但誰能保證某個框架總是完成某項工作最好的工具呢?存在多年的大型專案必須有好的表現,而且要隨時做好調整,如果選錯了PHP框架,可能無法做到這一點。較舊的PHP框架可能由於缺乏社群支援而變慢或過時,這些舊框架通常使用過程式碼編寫,而沒有使用新式的物件導向程式碼以及PHP的一些新特性,總之,決定是否使用PHP框架時,要考慮的事情很多。 慶幸的是,Laravel在這些擔憂方面表現良好,因此才能在眾多PHP框架中脫穎而出,從某種意義上來說,Laravel也是個基於組件開發的框架(核心組件是自身的Illuminate庫,功能實作上則大量依賴第三方元件),相較於Symfony而言,上手又比較簡單,所以兼具了擴充性和易用性。但是,Laravel也存在一些不足,例如Laravel自身的元件不能輕易解耦,用於Laravel框架之外(但相信這種狀況會有好轉,例如其資料庫和佇列元件就可以解耦出去)。綜合來看,Laravel仍是一個出色的框架,能幫組我們快速創造強大的應用程式。 那我們該使用元件還是框架呢?答案是,使用正確的工具做正確的事,如果能透過一些PHP元件快速實現小型項目,那就使用元件,如果有多個團隊成員開發大型項目,而且能從框架提供的約定準則和結構中受益,那就使用框架(如果是在糾結使用什麼框架,那麼選擇Laravel吧,它不會讓你失望),使用框架能夠引導並加速專案的開發。 PS:這句話也適用於語言之爭,用正確的語言做正確的事,沒事少BB。 3、使用組件
Packagist
我們在Packagist中尋找PHP元件,這個網站用來收集PHP元件,最好的PHP元件在Packagist中都能找到。 例如我們想使用一個http元件用來收發HTTP訊息,在搜尋框中搜尋http,得到的第一個結果就是Guzzle,就用它吧。
Composer Packagist是尋找PHP組件的社區,而Composer則是安裝PHP組件的工具。 Composer是PHP的依賴管理器,運行在命令列中,你告訴Composer需要哪些元件,Composer會下載並把這些元件自動載入到你的專案中,就這麼簡單。
Composer和Packagist緊密合作,如果你告訴Composer想要使用guzzlehttp/guzzle元件,Composer會從Packagist取得guzzlehttp/guzzle元件,找出這個元件的倉庫位址,確定這個元件的倉庫地址找出這個元件的依賴,然後把guzzlehttp/guzzle元件及其依賴下載到你的專案。
此外,Composer會為專案中的所有PHP元件自動產生符合PSR標準的自動載入器,有效地抽象化了依賴管理和自動載入,所以,對PHP社群來說,Composer是最重要的附加工具,沒有之一,想想之前我們要使用諸如include、require、spl_autoload_register來手動實現自動加載的痛苦日子,這一點也不為過。
關於Composer的安裝與使用,這裡不贅述,請參考Composer中文網。
4、範例項目 下面我們透過一個範例專案來示範如何使用Composer和元件來發展一個PHP應用,而這個應用的功能是掃描一個CSV檔案中的URL,找出死鏈,而這個應用會向每個URL發HTTP請求,如果回傳的HTTP狀態碼大於等於400,就把這個死鏈發給標準輸出。這是一個命令列應用,開發好之後,我們會執行這個腳本,傳入csv檔案的路徑,在標準輸出中顯示死鏈清單。
安裝組件 開始之前,先看看哪些任務可以使用現有的PHP元件解決:我們需要一個可以迭代處理csv檔案資料的元件,此外還要向csv檔案中的每個URL發送HTTP請求,因此還需要一個可以發送HTTP請求並檢查HTTP回應的元件。
瀏覽Packagist後,我們找到guzzlehttp/guzzle和league/csv兩個元件,前者用於處理HTTP訊息,後者用於處理CSV資料。下面我們在專案最頂層執行以下指令:
Composer將依賴安裝在根目錄的vendor目錄下,安裝完成後,會在根目錄下產生composer.json和composer.lock檔案:
composer.lock檔案中會列出項目使用的所有PHP元件,以及元件的特定版本號,這其實是鎖定了項目,讓項目只能使用特定版本的PHP元件。這樣的好處是,composer會下載這個檔案中列出的特定版本,而不管Packagist中可用的最新版本是多少,你應該把composer.lock檔案納入版本控制,這樣讓團隊成員使用的PHP版本和你一樣,如果本機開發和伺服器使用的PHP元件版本相同,可以盡量降低由元件版本不同導致的bug。
如果確實要下載最新版本的元件並更新composer.lock,可以使用composer update指令。
自動載入 接下來我們來編寫應用程式碼,並在根目錄下建立一個scan.php文件,然後在該文件頂部使用require導入Composer所建立的自動載入器:
Composer建立的自動載入器其實就是個名為autoload.com的文件,保存在vendor目錄中,Composer下載各個PHP元件時,會檢查每個元件的comphpposer. json文件,決定如何載入該元件,得到這個資訊後,Composer會在本機為該元件建立一個符合PSR標準的自動載入器。這樣我們就可以實例化專案中的任何PHP元件,這些元件會按需自動載入。
寫程式碼下面我們正式使用Guzzle和CSV元件來寫scan.php程式碼:
下面我們在urls.csv中加入一些URL,一行一個,而且至少有一個是死鏈:
然後開啟終端,執行scan.php腳本:
我們傳入了兩個參數,第一個是腳本檔案scan.php的路徑,另一個是CSV檔案的路徑。輸出如下:
由於上傳附件及文字限制,有時部分圖片、文字可能顯示不了,詳情請見:http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=10000610&idx=3&sn=e4974922c197cb2237d > 歡迎大家一起交流。 掃描以下二維碼,獲取更多更精美文章! (掃碼關注有意不到的驚喜的哦!!) ![]() 也歡迎加入【大家技術網討論QQ群】,群號:256175955,請備註你個人的介紹!讓我們一起聊聊it的那些事吧! |

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。