參數 (Parameter) 和 引數 (Argument) ,是我在寫 PHP 時,曾經的一處風景,參數和引數在不同的編程語言中可能會具有不同的含義,因此,撰寫 PHP 之初,免不了的得到 PHP 文件 爬文: Functions
我會搞混這兩個中文翻譯的 名稱 和 用途,因此,我都是記英文單字名稱 (Parameter, Argument) 和 Parameter, Argument 代表的意思!
我曾經的問題,想不到在 stackoverflow 上,也有大篇幅的討論過,如 What's the difference between an argument and a parameter? 一文,裡面對於 Parameter, Argument 的解釋: A parameter is a variable in a method definition. When a method is called, the arguments are the data you pass into the method's parameters.
剛開始學習 PHP 時,正在學習的是 function 不懂為什麼這裡提到的是 method ? 經過時間的推移,久而久之就會知道這只是名詞上的不同,function 和 method 其實是在講同一件事。
例如,寫到 PHP 的 OOP (Object-oriented programming; 物件導向設計) 時,class 裡面用到的 function 又稱為 method。
以下是我在 stackoverflow 上,看到比較好懂的 Parameter 和 Argument 文字解釋:
程式解釋:
<?php
public function add($a, $b){
return $a + $b;
}
echo add(4, 5); // 9
$a
和 $b
是 function add()
的參數(parameter),它們是 function 定義中的命名變數,用於接收傳遞給 function 的值。
4
和 5
是 function add()
的引數(argument),它們是在 function 調用時傳遞給 function 的實際值。
當 function add(4, 5)
被呼叫時,$a
被賦值為 4
,$b
被賦值為 5
,函數返回它們的和 9
,所以 echo add(4, 5);
會輸出 9
。
換句話說,parameter 是$a
時,依照位置的對應關係 argument 是 4
不會是 5
,這個稱作 parameter position. 我之後在 Named Arguments 一文中,分享 PHP 8.0.0 以後,PHP function 新增的功能。
PHP 8.0.0 以後,function 的 Argument List 可以尾隨 逗號 如下:
<?php
function takes_many_args(
$first_arg,
$second_arg,
$a_very_long_argument_name,
$arg_with_default = 5,
$again = 'a default string', // This trailing comma was not permitted before 8.0.0.
)
{
// ...
}
我是 Function Argument List with trailing Comma 的受益者,我是從 PHP 8.0 開始學習起,也就是說,我直接受益者,Argument List 很長 或包含 長變數名稱 的情況下,可以方便地垂直列出參數。
感謝好想工作室-Backend Camp M 同學 和 J 同學,讓我再次回憶當初 PHP Argument 和 Parameter 的風景,最近想工作室-Backend Camp 開始招生囉!
1 PHP Functions
2 What's the difference between an argument and a parameter?