新手村導讀 - 2: 初入PHP

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

這篇就來介紹工作後最常遇到的幾個小(?)問題吧。

事事寫 Log

強烈建議大家要養成寫 Log 的好習慣,這除了幫助你自己更好的 debug,也能幫助後面可能有需要查找發生問題點的人們。

當然,也能更好把鍋推給別人(不太對)

在寫 Log 的時候,除了記得要寫清楚發生的事件、時間、地點,更重要的是要分清楚 Log 的層級,這樣才能讓 Log 更有用。

一般來說, Log 的層級主要分為以下幾種:

  1. Trace: 追蹤程式執行過程,通常是最詳細的 Log。
  2. Debug: 開發時除錯用的 Log,通常是用於開發過程中,用來追蹤程式執行過程中的變數值、函數呼叫等。通常測試環境設定檔會設定在這個層級。
  3. Info: 一般性資訊,通常是用來記錄程式執行過程中的重要事件,例如程式啟動、結束等。
  4. Warning: 警示警告,通常是用來記錄程式執行過程中的一些不正常事件,例如檔案不存在、網路連線異常等。通常這個層級的錯誤不會讓程式停止執行,但須要確認是否有些問題。
  5. Error: 錯誤事件,通常是用來記錄會讓程式停止執行的重大錯誤,例如檔案讀寫錯誤、資料庫連線異常等。通常線上環境設定檔會設定在這個層級。

更多層級詳情可以看這篇文章: Zam 大大的文章

此外,範例程式碼:

use App\Facades\Log;
Log::traceLog()->debug(’看你要記錄什麼內容’);

本地印出錯誤或過程

相信有些人跟我一樣不喜歡把東西丟到測試環境後才知道錯誤,畢竟測試環境的 Log 人人都可以看,一不小心就會被人發現你犯了低級錯誤(?)

所以我們可以在本地印出錯誤或過程,這樣我們就可以在本地就知道錯誤在哪裡了!

如果是用 PHP 的話,你可以使用 dd() 來印出變數,或是使用 var_dump() 來印出類型+內容。

這兩個最主要的差別是 dd() 會停止程式,而 var_dump() 不會。

此外,如果是用 Laravel 的話,你可以使用 dump 來印出 內容,不僅有顏色也更易讀。

PHPCS

PHPCS 全名為 PHP_CodeSniffer,這個工具可以設定 PHP 的排版規則,讓共同開發的大家 Coding Style 一致,不僅增加程式碼的可讀性,也可以避免一些不必要的錯誤。

PHPCS 包含了空格、換行、縮排、命名規則等等,可以透過設定檔來自訂規則,也可以使用別人已經設定好的規則。

在設定好規則後,可以透過指令來檢查程式碼是否符合規則,或是透過指令來修正不符合規則的程式碼,十分方便!

自動調整程式碼符合規則的指令: ./vendor/bin/phpcbf ./

變數儲存於設定檔

這一項就相對重要一些,畢竟算是資安等級的事情。

以前在本地獨立開發的時候,我們常會將使用 api 的 key、 DB 連線的帳號密碼等等直接寫在程式碼裡面,這樣的確方便了開發,但是一旦上線之後,這些資料就會暴露在外,這樣的做法是非常不安全的。

因此,取而代之我們應該將這些資料儲存於設定檔中(例如 .env 檔中),並且在程式碼中引用這些設定檔內容,這樣就可以避免這些資料被外人看到。

除此之外,這樣的做法也有一個好處,就是當我們需要更改這些資料時,只需要更改設定檔中的內容,而不需要更改程式碼,這樣就可以避免因為更改資料而導致的錯誤。

避免魔術數字( magic number )

跟前面一點類似,有些因為商務邏輯或是討論評估過後的數字,會在程式碼中出現多次,這時候就應該把這些數字定義成常數。

這樣可以讓程式碼更容易閱讀,也可以避免因為數字改變而需要修改多處的問題。

最重要的是,將這些數字額外建立 Enum 管理後可以額外花空間寫註解,不僅不影響原本的程式碼,也可以讓其他人更容易了解這些數字的意義。

程式碼靜態分析與動態分析

靜態分析指的是在程式碼不運作的前提下,讓程式去判定 code 本身的格式錯誤、潛在安全性問題以及每個功能平均行數大小等等。

動態分析則是在程式碼運作的時候,去觀察程式碼的運作狀況,例如:記憶體使用量、CPU 使用量、程式碼執行時間等等。

每個套件或是每家公司的分析項目其實都略有不同,因此這邊就不一一贅述,主要是想提醒大家善用這些工具可以提高開發效率與品質。

參考資料:

  1. Laravel dd() vs dump() vs var_dump() vs print_r() with Example - Shouts.dev
  2. PHP Mess Detector | PhpStorm Documentation
  3. 用自動化靜態掃描提升 code review 效率. Code Review 總讓人感到費神 | by Genchi Lu | Medium
留言
avatar-img
留言分享你的想法!
avatar-img
林柏宇的沙龍
2會員
54內容數
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
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
本章介紹了 PHP 中的例外處理技術,包括其語法、常見異常類型以及如何主動觸發異常訊息。我們還學習了如何自定義異常類別,以便更好地管理和處理不同類型的異常情況。通過使用例外處理,可以提高程式碼的穩定性、可讀性和可維護性,並提供更優雅的錯誤信息處理機制。
Thumbnail
本章介紹了 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
介紹工作後幾個常見的小問題,包括寫 Log 的好習慣、本地印出錯誤或過程、PHPCS 工具、變數儲存於設定檔、避免魔術數字、程式碼靜態分析與動態分析。
Thumbnail
介紹工作後幾個常見的小問題,包括寫 Log 的好習慣、本地印出錯誤或過程、PHPCS 工具、變數儲存於設定檔、避免魔術數字、程式碼靜態分析與動態分析。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
最近幫忙弄了貼圖, 寫個心得來小小紀念一下~ 不囉嗦,先上圖~
Thumbnail
最近幫忙弄了貼圖, 寫個心得來小小紀念一下~ 不囉嗦,先上圖~
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News