
近日,PHP8正式發布,其中最引人注目的功能之一是Named Arguments(命名參數)。這個特性使得函數呼叫更具可讀性和易維護性,使得程式碼可讀性更高,也能大幅減少在程式設計中的犯錯機率。本文將介紹PHP8的命名參數及其如何最佳化函數調用,並將透過具體的程式碼範例來展現其強大的功能。
一、Named Arguments是什麼?
類似JavaScript和其他語言中的命名參數,在函數呼叫中使用命名參數,可以直接在函數呼叫中指定哪個參數應該如何被傳遞,而不是根據它們的位置。這樣可以有效清除因參數位置不清而引起的疑惑。
二、Named Arguments的使用
2.1 多個參數呼叫
在PHP8以前,我們通常透過以下範例進行函數呼叫:
1 2 3 4 5 6 | function demo_function( $arg1 , $arg2 , $arg3 ) {
}
demo_function( 'Value1' , 'Value2' , 'Value3' );
|
登入後複製
在PHP8 中,你可以透過下面的方式來進行命名參數呼叫:
1 2 3 4 5 6 | function demo_function( $arg1 , $arg2 , $arg3 ) {
}
demo_function(arg1: 'Value1' , arg2: 'Value2' , arg3: 'Value3' );
|
登入後複製
使用命名參數允許在呼叫函數時列出每個參數,這樣可以在程式碼中更清晰地表達你的意圖,並且也可以避免因參數位置而導致的不必要的錯誤或呼叫不合適的函數。
2.2 部分參數呼叫
在PHP8以前,部分參數呼叫方式如下所示:
1 2 3 4 5 6 | function demo_function( $arg1 , $arg2 , $arg3 ) {
}
demo_function( 'Value1' , 'Value2' , $arg3 );
|
登入後複製
在PHP8中,對於這種情況,你可以像下面這樣進行命名參數呼叫:
1 2 3 4 5 6 | function demo_function( $arg1 , $arg2 , $arg3 ) {
}
demo_function(arg1: 'Value1' , arg2: 'Value2' , arg3: $arg3 );
|
登入後複製
這種呼叫方式使得程式碼更有可讀性和可維護性。
三、Named Arguments帶來的認知好處
當函數擁有大量參數時,Named Arguments特性的使用帶來了認知和程式碼整齊上的好處. 看下面的例子:
1 2 3 4 5 | function get_formatted_date( $year , $month , $day , $hour = 0, $minute = 0, $second = 0) {
}
$data = get_formatted_date(2020, 01, 20, 11, 30, 20);
|
登入後複製
使用Named Arguments,上面的函數呼叫可以改為以下形式:
1 | $data = get_formatted_date(year: 2020, month: 01, day: 20, hour: 11, minute: 30, second: 20);
|
登入後複製
使用Named Arguments的好處如下:
##1.呼叫語句的軟體分析
使用Nmaed Arguments的程式碼更容易被Linting/分析軟體分析
例如,使用了PHP Storm作為編輯IDE,下面的程式碼將顯示一個警告:
1 | $data = get_formatted_date(year: 20, month: 1, day: 20);
|
登入後複製
更人性化的偵錯資訊
函數的偵錯資訊變得更有人性化。例如下面這個調用,
1 | $data = get_formatted_date(year: 2020, month: 01, day: 20, hour: 11, minute: 30, second: 20); $data = get_formatted_date(year: 2020, month: 01, day: 20, hour: 11, minute: 30, second: 20);
|
登入後複製
很容易理解然後調整其中的某個值
#未來相容
如果將新參數添加到函數中,命名參數很容易更新程式碼。看下面的範例:
1 2 3 4 5 | function get_formatted_date( $year , $month , $day , $hour = 0, $minute = 0, $second = 0, $timezone = 'UTC' ) {
}
$data = get_formatted_date(year: 2020, month: 01, day: 20, hour: 11, minute: 30, second: 20, timezone: 'America/New_York' );
|
登入後複製
這個呼叫是依然向後相容的,後面那些不具名的參數名稱可以依舊保留。
結論
Named Arguments是PHP8最令人興奮的新功能之一,這項特性將大大提升開發者編寫函數的易讀性、維護性,而命名參數也能降低函數參數順序造成的錯誤及弊端,變成更友善的寫法。如果您已經升級至PHP8,建議盡量使用命名參數來最佳化您的函數調用,也可以在您的專案中使用此特性來提高程式碼的可讀性和可維護性。
以上是PHP8如何使用Named Arguments優化函數呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!