引入本機環境上的 PHP 套件

如果你正在開發自己的 PHP 套件,或是想修改並測試他人的 PHP 套件,那麼將這些套件引入到其他專案中進行實驗會是很常見的情況。在現代 PHP 開發中,都會要求專案和套件使用 Composer 來管理依賴套件。但問題來了:...

PHP 8.4 將支援 HTML 5 的解析

自從 PHP 基金會成立以後,PHP 核心維護團隊招募到了許多優秀的新成員,或許是因為有了充足的人力協助開發,PHP 在近幾年的更新下新增了許多功能,讓 PHP 這個老牌語言始終散發著活力。最新的 8.4 版本即將在今年底...

來當資安研究員,Joomla 的 XSS 漏洞研究

前陣子,在全世界 CMS (Content Management System) 市場擁有 2% 市占率的 Joomla 被發現含有 XSS (Cross-Site Scripting) 漏洞。 造成這個漏洞的原因並非是 Joomla 的程式邏輯有什麼問題,而是 PHP 本身提供的函式...

使用 Docker 把自己的 Laravel 專案容器化

最近我正在學習如何使用容器管理平台 K8s,過程中深刻體會到容器化所帶來的許多好處。舉例來說,它可以更好地實現水平擴展,同時在更新服務時,可以使用滾動更新 (rolling update) 的方式,讓服務不間斷。因此某一天...

如何在 PHP 中測試 Trait

在使用 Laravel Livewire 的時候,我時常會把 livewire component 中可以重複使用的邏輯或是方法抽出並放在 Trait 中。Laravel Livewire 官方文件中也建議使用 Trait 來處理經常重複使用的邏輯。詳細可以參考下面兩...

使用 Laravel 團隊的 Coding Style,簡單介紹 Laravel Pint

之前我有分享過一篇文章簡單介紹 PHP CS Fixer,開發團隊可以使用 PHP CS Fixer 來統一團隊的 coding style,而 PHP CS Fixer 預設會使用 PHP-FIG 提出的 PSR-12 來當作整理 coding style 的依據。但其實每個團隊可...

簡單介紹 PHP 測試框架 Pest (下)

繼上回簡單介紹 PHP 測試框架 - Pest (上) 後,讓我們緊接著繼續看看 Pest 的其他實用功能。使用 Datasets 測試多組資料如果你想要在一個流程測試中,測試多筆資料,你會怎麼做呢?雖然我們可以把測試拆開,為每筆資...

簡單介紹 PHP 測試框架 Pest (上)

Pest 是由 Laravel 團隊中 Nuno Maduro 所開發的 PHP 測試框架,是建構於 PHPUnit 上再包裝版本,除了完全兼容 PHPUnit,Pest 還提供更多優雅且實用的測試方法。前陣子發現 Laracasts 上原來有 Pest From Scatch 的...

簡單介紹 PHP 的生成器 (Generators)

PHP 的生成器 (Generators) 提供了一個簡單的方式去實現迭代器 (Iterrators)。如官方文件所說:A generator allows you to write code that uses foreach to iterate over a set of data without needing to build a...

簡單介紹 PHP 的參數拆包語法

你可能在 PHP 中看過 ...$args 的程式碼,這個 ... 又稱為參數拆包 (arguments unpacking,AKA spread operator),是在 PHP 5.6 加入的功能。... 可以將一個陣列中的參數拆開來並放到新的陣列中。$foo = [1, 2, 3];...