來當資安研究員,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 中的 ...$args,這個 ... 是什麼?

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

簡單介紹 Laravel 的服務容器

Laravel 提供一種名為服務容器(Service Container)的工具,用來管理類與類之間的依賴與依賴注入。但在介紹服務容器之前,先來介紹一下什麼是依賴?什麼是依賴注入?什麼是依賴?如果一個A類中的方法需要使用到B...

檢查與修正團隊的 Code Style,簡單介紹 PHP CS Fixer

每位碼農的人生成長歷程不盡相同,因此在 Coding 上可能都會有各自的習慣或是風格。在團隊協作開發的時候,不同的 Coding 風格可能會給團隊造成一些困擾,例如:有人喜歡用 4 個空格排版,但有人覺得 2 個空格才剛好...