iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
自我挑戰組

PHP 沿途的風景系列 第 24

[Day 24] PHP 8.0.0 之好用功能 Named Arguments

  • 分享至 

  • xImage
  •  

PHP 8.0.0 之好用功能 Named Arguments

本文介紹 PHP 8.0.0 之後新增的功能 Named Arguments,也就是說,Named Arguments 功能可以全面應用在 Laravel 9 以後的版本。下圖是參考 Laravel #Support Policy

Parameter position

PHP Argument 和 Parameter 差異 一文中提到 function Parameter 和 Argument 有著對應關係:

<?php
public function sub($a, $b){
        return $a - $b;       
    }
echo 'sub(4, 5) => '.sub(4, 5).PHP_EOL; // sub(4, 5) => -1

function Parameter 和 Argument 對應關係,經過 PHP 8.0.0 提供的 Named Arguments 後,往後使用 function 更加彈性。

Named Arguments

操作只有 一 ~ 三個 Argument,加上依靠現行的編輯器 (VScode, PhpStorm ..等) 強大的輔助功能時,只要注意 Argument 順續和 Parameter 是否有存在預設值。
但是在操作 function 遇到多個 Argument 和 多個 Parameter 帶有預設值時,就蠻考驗經驗和記憶能力,例如 php setcookie()

<?php
// pho setcookie 設定:
setcookie(
    string $name,
    string $value = "",
    int $expires_or_options = 0,
    string $path = "",
    string $domain = "",
    bool $secure = false,
    bool $httponly = false
): bool

慶幸 PHP 8.0.0 新增功能 『function 的 Argument List 可以尾隨逗號』,讓 Argument List 很長 或包含 長變數名稱 的情況下,可以方便地垂直列出參數,可以將 setcookie() 如下展示:

<?php
setcookie(
    'test',
    '',
    time() + 60 * 60 * 2,
);

我第一次用 setcookie() 時,雖然是條列式的顯示,還是得花時間在確認 'test', '', time() + 60 * 60 * 2是對應的是哪幾個 Parameter ?! 以及有沒有將 argument 對應到正確的位置上。

  • setcookie() with named arguments
<?php
setcookie(
    name: 'test',
    expires: time() + 60 * 60 * 2,
);

結語

Named Arguments 除了跳過具有預設值的 Parameter 之外,還有個好處是可以清楚地了解那個 Argument 的作用;這在具有多個 Parameter 的 function 中特别有用。詳細的 Named Arguments 應用 - 參考 PHP Named Arguments


參考文章

1 Laravel #Support Policy
2 PHP Argument 和 Parameter 差異
3 php setcookie()
4 PHP Named Arguments


上一篇
[Day 23] PHP Argument 和 Parameter 差異
下一篇
[Day 25] 匿名函式 Anonymous functions
系列文
PHP 沿途的風景30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言