PHP系列 - 1: 簡介

更新於 發佈於 閱讀時間約 8 分鐘

這個 PHP 系列將介紹我在工作中獲得的一些 PHP 相關小知識、曾經不小心踩過的雷,以及常見的誤解和錯誤概念,例如魔術方法、回呼函數(callback)、Composer 等。在這第一單元中,我們不會討論 PHP 的來源或歷史這些古板的內容,而是直接開始介紹一些實用的工具吧!

PHP 分析器 xhprof

在產品的線上環境中,由於用量大、流量高,往往無法像在本地一樣進行測試和比較。不過,有些情境卻必須在線上環境才能重現,這時候就可以使用 xhprof 這個 PHP 分析器。它相對於其他工具消耗的 CPU 資源較少,但仍能提供重要的性能數據,幫助我們在鎖定問題時有更清晰的方向。

不過,唯一的缺點是,這個工具目前僅支援 PHP 7.4 版本以前的版本,後續版本將不再提供支持。

簡單測試 PHP Sandbox

有時候,我們只是想快速測試一些東西,但又不想在目前的專案中騰出空間去做這件事情(例如切換分頁或更改 PHP 版本),這時候就可以使用 PHP 沙盒 這個網站。除了可以直接執行 PHP 程式碼外,還能選擇各個主版本以及子版本的 PHP,測試起來非常方便!

格式檢查 PHP_CodeSniffer

在編寫程式時,我們常常會進入心流狀態,程式碼如湧泉般源源不斷流出。當回過神來後,往往會發現雖然邏輯正確,但格式卻一團亂。這時候,PHP_CodeSniffer 就成了我們的好幫手!

下載這個套件後,只需執行一個指令,它就會檢查程式碼中的格式問題,並指出具體的錯誤所在。更棒的是,PHP_CodeSniffer 還能直接幫你修正格式問題,讓你的程式碼更整潔、更具可讀性!

PHPDoc 註解

由於 PHP 是弱型別語言,為了保持團隊的運作效率,通常會要求開發者撰寫註解,以便後續的同事能夠理解程式碼。其中一種常見的方式就是使用 PHPDoc。PHPDoc 是一種廣泛使用的非正式標準,提供了多種標記,例如 @param@return@throws 等,以方便描述函數的參數、返回值及可能拋出的異常。

此外,PHPStan 內建的功能可以自動生成 PHPDoc 註解,進一步提高了編碼的效率與可讀性。

靜態分析 PHPStan

PHPStan 是一個用於靜態分析 PHP 程式碼的工具,可以透過調整規則等級決定檢測的層級[註1]。此外,它還支援使用正則表達式來忽略特定的錯誤。常見的報錯包括呼叫函數時的參數型別錯誤、註解錯誤(例如調整了參數卻未更新相應的註解)、以及無效的判斷式[註2]等。

範例設置檔:

parameters:
level: 2
paths:
- app
universalObjectCratesClasses:
- Illuminate\\Support\\HigherOrderCollectionProxy
ignoreErrors:
- '#Call to an undefined static method Illuminate\\\\Support\\\\Str::(mb_trim)\\(\\)#'
- '#Call to an undefined static method Illuminate\\\\Validation\\\\Rule::(mimetypes)\\(\\)#'
- '#Call to an undefined static method Corp104\\\\Vip\\\\Redis\\\\Facades\\\\RedisCache::(get|put|del|setex)\\(\\)#'
- '#Call to an undefined method Illuminate\\\\Http\\\\Request::(additionalInformation|csrInformation|createServerRequest)\\(\\)#'
- '#Call to an undefined method Illuminate\\\\Http\\\\UploadedFile::(overwrite|read)\\(\\)#'
- '#Call to an undefined method Illuminate\\\\Redis\\\\Connections\\\\Connection::(get|put|del|setex)\\(\\)#'
- '#Call to an undefined method Illuminate\\\\Support\\\\HigherOrderCollectionProxy::(\\w+)\\(\\)#'
- '#Call to an undefined method Illuminate\\\\Database\\\\Eloquent\\\\Relations\\\\HasOne::(\\w+)\\(\\)#'
- '#Call to an undefined method Illuminate\\\\Database\\\\Eloquent\\\\Relations\\\\HasMany::(\\w+)\\(\\)#'

[註1] 主要是為了避免檢測層級設置過高時,產生大量誤報,而這些誤報多來自 Laravel 提供的魔術方法。

[註2] 例如,判斷式 empty(collect()) 必定會返回 false。


參考資料:

  1. https://www.php.net/manual/zh/intro.xhprof.php
  2. https://learnku.com/laravel/t/3142/php-performance-tracking-and-analysis-tool-xhprof-installation-and-use
  3. https://onlinephp.io/
  4. https://github.com/squizlabs/PHP_CodeSniffer
  5. https://old-oomusou.goodjack.tw/phpstorm/phpstorm-phpdoc/
  6. https://docs.laravel-dojo.com/php-the-right-way/gh-pages/phpdoc
  7. https://phpstan.org/
  8. https://phpstan.org/user-guide/rule-levels
  9. https://phpstan.org/user-guide/baseline
留言
avatar-img
留言分享你的想法!
avatar-img
林柏宇的沙龍
2會員
46內容數
test
林柏宇的沙龍的其他內容
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/20
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
Thumbnail
2025/04/20
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
Thumbnail
2025/04/13
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。
Thumbnail
2025/04/13
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。
Thumbnail
看更多
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
久違的使用 WSL,發現現在進步很多,但有個地方一直設定不好,就是本文今天的主角──PhpStrom 中的 PHP_Codesniffer。好在皇天不負苦心人,最後總算搞定了,所以寫一篇筆記記錄。
Thumbnail
久違的使用 WSL,發現現在進步很多,但有個地方一直設定不好,就是本文今天的主角──PhpStrom 中的 PHP_Codesniffer。好在皇天不負苦心人,最後總算搞定了,所以寫一篇筆記記錄。
Thumbnail
本文將介紹一些在 PHP 開發過程中實用的工具和技巧,涵蓋 PHP 分析器 xhprof、PHP 沙盒、PHP_CodeSniffer、PHPDoc 註解及靜態分析工具 PHPStan 等。這些工具能夠幫助開發者提高效率、減少錯誤,並改善程式碼的可讀性。
Thumbnail
本文將介紹一些在 PHP 開發過程中實用的工具和技巧,涵蓋 PHP 分析器 xhprof、PHP 沙盒、PHP_CodeSniffer、PHPDoc 註解及靜態分析工具 PHPStan 等。這些工具能夠幫助開發者提高效率、減少錯誤,並改善程式碼的可讀性。
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
在PHP的團隊開發中,PHP CS Fixer可以確保每個開發人員的Coding Style相同,是相當重要的工具。本篇文章將會詳細說明PHP CS Fixer在Linux環境下的安裝方式。
Thumbnail
在PHP的團隊開發中,PHP CS Fixer可以確保每個開發人員的Coding Style相同,是相當重要的工具。本篇文章將會詳細說明PHP CS Fixer在Linux環境下的安裝方式。
Thumbnail
PHP(全名為「PHP: Hypertext Preprocessor」)是一門開源的伺服器端程式語言,為動態網頁開發設計。閱讀本文將讓您瞭解PHP的特點、廣泛支援、易學性、資源豐富以及跨平臺性。
Thumbnail
PHP(全名為「PHP: Hypertext Preprocessor」)是一門開源的伺服器端程式語言,為動態網頁開發設計。閱讀本文將讓您瞭解PHP的特點、廣泛支援、易學性、資源豐富以及跨平臺性。
Thumbnail
在專案開發的時候,專案架構搭建時團隊就會設定 php code style 檢查,避免整個開發團隊大家走出自己的風格,尤其是兩格空白還是四格空白,總是會有不同意見,這時候定義出團隊code style,並透過配置Github Action CI(Continuous Integration)
Thumbnail
在專案開發的時候,專案架構搭建時團隊就會設定 php code style 檢查,避免整個開發團隊大家走出自己的風格,尤其是兩格空白還是四格空白,總是會有不同意見,這時候定義出團隊code style,並透過配置Github Action CI(Continuous Integration)
Thumbnail
  編輯器是寫XQ最核心的位置,在開始學習時若能清楚知道這邊每個功能,相信往後寫程式時會順利許多,接來下我將解說XQ編輯器常見的使用與說明,希望新手朋友能好好了解。 Step1我們先找到XS編輯器的位置 Step2-瞭解XS編輯器各位置的功能是甚麼 上述的附圖與註解是幾個Xscipt編輯器比
Thumbnail
  編輯器是寫XQ最核心的位置,在開始學習時若能清楚知道這邊每個功能,相信往後寫程式時會順利許多,接來下我將解說XQ編輯器常見的使用與說明,希望新手朋友能好好了解。 Step1我們先找到XS編輯器的位置 Step2-瞭解XS編輯器各位置的功能是甚麼 上述的附圖與註解是幾個Xscipt編輯器比
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News