Partial named params implementation by nikic · Pull Request #5357 · php/php-src
PHP: rfc:named_params
PHPは組み込み関数ですら独特な言語です。文字列の分割関数、結合関数、それぞれで引数順が違って実装され、その対策に連結関数は引数順を気にしない様になったり、配列関数それぞれの配列を引数に取る位置が別々であったりします。このため引数順間違いが少なくありません。引数順を変えるだけの関数を作る人やフレームワークも現れるぐらいです。
【PHP】関数implodeの引数が類を見ないくらい自由だった話 – 株式会社シーポイントラボ | 浜松のシステム・RTK-GNSS開発
PHPの引数順と最初の開発者のインタビュー – 株式会社シーポイントラボ | 浜松のシステム・RTK-GNSS開発
名前付き引数はその名の通り、引数に名前を付けて扱う仕組みです。私的にはPythonでよく使います。この仕組みはPythonではキーワード引数と名付けられており引数順を気にせずに引数を渡せます。
# 以下は等価 complex(real=3, imag=5) complex(imag=5, real=3)
これがPHPでもその内実装されそうです。次のリンクは名前付き引数の説明とプルリクエストです。
PHP: rfc:named_params
Partial named params implementation by nikic · Pull Request #5357 · php/php-src
以下はプルリクエストのコメントの引用です。
This is a partial port of https://wiki.php.net/rfc/named_params to PHP 7. This is just the basic userland functionality, there’s still some large chunks missing:
– ZPP support. I’m unsure how to integrate into FastZPP in an efficient manner.
– Support for variadics and unpacking.
– Opcache support.これは https://wiki.php.net/rfc/named_params を PHP 7 に部分的に移植したものです。これは基本的なユーザーランドの機能だけで、まだいくつかの大きな塊が不足しています。
– ZPPのサポート。効率的な方法でFastZPPに統合する方法がわかりません。
– variadics とアンパックのサポート。
– Opcache のサポート。
プルリクエストのコメントとphpt(PHPソースコードのテストフレームワーク。ほとんどのテストはechoされた結果を検証するのみでテスト内容がとてもわかりやすい)を見る限り、PHPの拡張機能を触らない限りもう使えそうな感じです。
最近扱う必要のあったPDFライブラリなどは引数が12個あるメソッド(大体の引数にデフォルト値が設定されており普段は4,5個の引数感で済みますが奥の引数を触ろうとするとPHPの仕様上、奥までの引数全てを設定する必要あり)をよく使ったりなど、名前付き引数があれば楽な状況はよくあります。もし、実装されたならば随分とコーディングがやりやすくなるでしょう。
TCPDF