近日,PHP8正式發(fā)布,其中最引人注目的功能之一是Named Arguments(命名參數(shù))。這個(gè)特性使得函數(shù)調(diào)用更具可讀性和易維護(hù)性,使得代碼可讀性更高,也能大幅減少在編程中的犯錯(cuò)概率。本文將介紹PHP8的命名參數(shù)及其如何優(yōu)化函數(shù)調(diào)用,且將會(huì)通過具體的代碼示例來展現(xiàn)其強(qiáng)大的功能。
一、Named Arguments是什么?
類似JavaScript和其他語言中的命名參數(shù),在函數(shù)調(diào)用中使用命名參數(shù),可以直接在函數(shù)調(diào)用中指定哪個(gè)參數(shù)應(yīng)該如何被傳遞,而不是根據(jù)它們的位置。這樣可以有效清除因參數(shù)位置不清而引起的疑惑。
二、Named Arguments的使用
2.1 多個(gè)參數(shù)調(diào)用
在PHP8以前,我們通常通過以下示例進(jìn)行函數(shù)調(diào)用:
function demo_function($arg1, $arg2, $arg3) { //在函數(shù)中采用$arg1, $arg2, $arg3的方式 } //調(diào)用函數(shù) demo_function('Value1', 'Value2', 'Value3');
登錄后復(fù)制
在 PHP8 中,你可以通過下面的方式來進(jìn)行命名參數(shù)調(diào)用:
function demo_function($arg1, $arg2, $arg3) { //在函數(shù)中采用$arg1, $arg2, $arg3的方式 } //使用命名參數(shù)調(diào)用函數(shù) demo_function(arg1: 'Value1', arg2: 'Value2', arg3: 'Value3');
登錄后復(fù)制
使用命名參數(shù)允許在調(diào)用函數(shù)時(shí)列出每個(gè)參數(shù),這樣可以在代碼中更清晰地表達(dá)你的意圖,并且也可以避免因參數(shù)位置導(dǎo)致的不必要的錯(cuò)誤或調(diào)用不合適的函數(shù)。
2.2 部分參數(shù)調(diào)用
在PHP8以前,部分參數(shù)調(diào)用方式如下所示:
function demo_function($arg1, $arg2, $arg3) { // 在函數(shù)中采用$arg1, $arg2, $arg3的方式 } demo_function('Value1', 'Value2', $arg3);
登錄后復(fù)制
在PHP8中,對(duì)于這種情況,你可以像下面這樣進(jìn)行命名參數(shù)調(diào)用:
function demo_function($arg1, $arg2, $arg3) { //在函數(shù)中采用$arg1, $arg2, $arg3的方式 } demo_function(arg1: 'Value1', arg2: 'Value2', arg3: $arg3);
登錄后復(fù)制
這種調(diào)用方式使得代碼更具有可讀性和可維護(hù)性。
三、Named Arguments帶來的認(rèn)知好處
當(dāng)函數(shù)擁有大量參數(shù)時(shí),Named Arguments特性的使用帶來了認(rèn)知和代碼整潔上的好處. 看下面的例子:
function get_formatted_date($year, $month, $day, $hour = 0, $minute = 0, $second = 0) { } $data = get_formatted_date(2020, 01, 20, 11, 30, 20);
登錄后復(fù)制
使用Named Arguments,上面的函數(shù)調(diào)用可以改為以下形式:
$data = get_formatted_date(year: 2020, month: 01, day: 20, hour: 11, minute: 30, second: 20);
登錄后復(fù)制
使用Named Arguments的好處如下:
1.調(diào)用語句的軟件分析
使用Nmaed Arguments的代碼更易于被Linting/分析軟件分析
例如,使用了PHP Storm作為編輯IDE,下面的代碼將顯示一個(gè)警告:
$data = get_formatted_date(year: 20, month: 1, day: 20);
登錄后復(fù)制
- 更人性化的調(diào)試信息
函數(shù)的調(diào)試信息變得更有人性化。例如下面這個(gè)調(diào)用,
$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);
登錄后復(fù)制
很容易理解然后調(diào)整其中的某個(gè)值
- 未來兼容
如果將新參數(shù)添加到函數(shù)中,命名參數(shù)很容易更新代碼。看下面的示例:
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');
登錄后復(fù)制
這個(gè)調(diào)用是依然向后兼容的,后面那些不具名的參數(shù)名可以依舊保留。
結(jié)論
Named Arguments是PHP8最令人激動(dòng)的新功能之一,這一特性將大大提升開發(fā)者編寫函數(shù)的易讀性、維護(hù)性,并且命名參數(shù)也能降低函數(shù)參數(shù)順序造成的錯(cuò)誤及弊端,變成一種更加友好的寫法。如果您已經(jīng)升級(jí)至PHP8,建議盡量使用命名參數(shù)來優(yōu)化您的函數(shù)調(diào)用,也可以在您的項(xiàng)目中使用此特性來提高代碼的可讀性和可維護(hù)性。
以上就是PHP8如何使用Named Arguments優(yōu)化函數(shù)調(diào)用?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.92cms.cn其它相關(guān)文章!
<!–
–>