簡單介紹 PHP 8.1 的列舉 (Enumerations)

PHP 8.1 在前陣子正式推出!加入不少新功能,其中包含最多人期待的列舉 (Enumerations)。列舉可以用來定義一系列的常數設定值,避免在開發時使用無效的設定值。簡單的 enum 設定如下。// 沒有回退 (non-backed) 的 e...

PHP 的引用傳遞與多階層分類

在 PHP 中,我們可以使用等號 ( = ) 將一個值賦予給一個新的變數。$a = 'Hello'; $b = $a;這時候 $b 會新增一個記憶體位址來存放值,如果對 $b 進行修改,並不會影響到 $a 的值。$a = 'foo'; $b = $a; $a = 'bar'...

用 PHP 簡單介紹 SOLID 原則裡面的 I

此為 SOLID 原則介紹的系列文章之一,所有文章的連結如下。用 TypeScript 解釋 SOLID 原則裡的 S用 PHP 解釋 SOLID 原則裡的 O用 TypeScript 簡單介紹 SOLID 原則裡面的 L用 PHP 簡單介紹 SOLID 原則裡面的 I用 Type...

用 PHP 解釋 SOLID 原則裡的 O

此為 SOLID 原則介紹的系列文章之一,所有文章的連結如下。用 TypeScript 解釋 SOLID 原則裡的 S用 PHP 解釋 SOLID 原則裡的 O用 TypeScript 簡單介紹 SOLID 原則裡面的 L用 PHP 簡單介紹 SOLID 原則裡面的 I用 Type...

避免 Laravel ORM 的 N+1 問題

目前大多框架都會使用 ORM (Object Relational Mapping,物件關係對映) 的方式與資料庫進行互動,ORM 的用途,是將關聯式資料庫的資料表,對應到應用程式中的物件,對資料庫的操作都會使用複雜的物件包裝好並模組化...

在 Laravel ORM 中,使用 AND 與 OR 組合 WHERE 條件的小技巧

有時候在撈取資料表資料的時候,因為 WHERE 條件較為複雜,可能需要使用多個 AND 或是 OR 才能撈取到我們想要的資料。假設我們的 WHERE 過濾條件如下。WHERE ('sex' = 'male' AND age > 18) OR ('sex' = 'female'...

Laravel ORM 的新功能,One of Many

在 Laravel 8.42 版本中,新增了一個蠻有趣的語法 One of Many。可以用來找出一對多關聯中,再「多」裡面「最新」的那一筆紀錄,並建立一對一關聯。簡單舉個例子,以部落格文章 (Post) 與留言回覆 (Reply) 舉例。一...

簡單介紹 Callback(回呼函式)

Callback(回呼函式),意思是指能藉由參數(argument)通往另一個函式的函式,聽起來很饒舌,我們用 PHP 來示範什麼是 Callback。根據官網對於 Callback 的介紹,下面這個 PHP 方法可以接受用戶自定義的回呼函式作...

簡單介紹 Laravel 的 DB Transactions

MySQL 資料庫,PHP 的好夥伴,在當前的版本中,MySQL 資料庫基本上都是使用 innoDB 作為預設的資料庫引擎。innoDB 與之前 MyISAM 相比,支援了 ACID 相容的交易(Transaction)功能。所謂的交易,是資料庫管理系統執...

Laravel 8.37 的新功能,匿名 Migration

起因於某次 Laravel 的 issue(#5899)中提出的一個狀況。問題中描述的狀況是在專案版本 1.0 的時候建立一個 migration,名稱為 create_new_table在專案版本 1.1 的時候建立一個 migration,名稱為 drop_new_table...