升級 PHP 8/8.1 後值得調整的一些新寫法
升級 PHP 8/8.1 後,用 PHP CS Fixer 的 Migration 系列 rule set,看看原本專案內哪些部分有新的寫法,整理一篇記錄一下。
更直覺的 str_contains
和 str_starts_with
相關規則:
modernize_strpos
以往我們常使用 strpos
來檢查指定字串是否有包含另一個字串,或者用它來判斷字串的開始:
if (strpos('Foo Bar Baz', 'Foo') !== false) {
echo 'Found';
}
if (strpos('Foo Bar Baz', 'Foo') === 0) {
echo 'Start with Foo';
}
現在有簡單的 str_contains
和 str_starts_with
了,可讀性更佳:
if (str_contains('Foo Bar Baz', 'Foo')) {
echo 'Found';
}
if (str_starts_with('Foo Bar Baz', 'Foo')) {
echo 'Start with Foo';
}
更方便的 ::class
magic constants
以往 ::class
只能用在 Class 名稱後方,想要從 object 取得 Class 名稱需要使用 get_class
。
$object = new ClassName();
echo get_class($object);
現在可以直接使用在 object 上了:
$object = new ClassName();
echo $object::class;
更好讀的八進位數字
相關規則:
octal_notation
PHP 8.1 開始支援以 0o
前綴來標示八進位的數字,讓可讀性又進一步提升了。
0644 === 0o644 // true
更安全的 random_int
相關規則:
random_api_migration
PHP 7.0 開始就內建的 random_int
,一直是官方推薦要採用的亂數函式,比起過去常見的 rand
更安全。
echo random_int();
參考資料
本著作由小克製作,以創用CC 姓名標示-相同方式分享 4.0 國際 授權條款釋出。