久々に PHP を使ったら名前付き引数が使えるようになってた (8.0 かららしい)

function fun($foo = 'FOO', $bar = 'BAR') {
echo "foo is $foo\n";
echo "bar is $bar\n";
}

fun(bar:"b");
foo is FOO
bar is b

PHP の関数って引数が多いのが多いし 引数だけみてこれがなんの値かわからないのが多かったからよさそう

fn1(1, 2, false, 'a', 3, true);

みたいなコードでそれぞれの引数が何を表してるのかなんて全然わからない

良さそうな機能ではあるんだけど 名前付き引数のみに制限はできないみたいなので 作る側が名前付き引数で使ってくれることを期待しても使う側が面倒だからと↑みたいコードで書くことは有り得そう
名前付き引数前提で考えてると引数の順番をそれほど考慮してないことも多くなりそうだし 名前の指定が必須ってできたほうがいいと思う

JavaScript だとオブジェクトで渡すフォーマットにしてその点を解決してるから PHP でもこれまでみたいに連想配列で受け取るほうがいいのかも

Python は構文として引数が positional のみか keyword のみかどっちでもありかを表現できるからいいんだけど
これを真似してくれないかな

def fn(foo, /, bar, *, baz):
print(foo, bar, baz)

foo は positional のみで keyword では渡せない
bar は positional でも keyword でも渡せる
baz は keyword のみで positional では渡せない

fn(1, 2, baz=3) # 1 2 3
fn(1, bar=2, baz=3) # 1 2 3

fn(foo=1, bar=2, baz=3) # error
fn(1, 2, 3) # error