のようなものを実装する関数を実装したいと思っているのは私の理解ですpreg_match
。これにより、3番目の引数が渡されると、メモリパターンが入力されます。
zend_parse_parameters()
内部的には、PHP関数は;と呼ばれる関数を使用します。フォーマット文字列と、呼び出しパラメータのメタデータが入力される可変数の引数を受け入れます。パラメータが渡されない場合(たとえば、オプションの場合)、メタデータは利用できないため、簡単に検出できます。
PHP自体に戻ると、残念ながら、関数の引数として渡されたfunc_arg_used($var)
かどうかを示すようなものはありません。$var
おそらくこれは言語への興味深い貢献になるでしょうが、それまではもっと古いものに落ち着く必要があります:)
if (func_num_args() > 1) {
// $second was passed and can be used to populate
}
$second
関数のシグネチャを変更するとき、特に;の前にパラメータを追加するときは、注意が必要な場合があります。ただし、当然、これは頻繁に発生することはありません。これは、依存する関数を確実に破壊するためです。最後に引数を追加しても、上記のコードには影響しません。
これを使用する方法は2つあります。
ReflectionFunction
-開発者の輝かしい新しいおもちゃ。関数を内省し、署名が作成されたときから変更されたかどうかを判断できます。ただし、特に代替案を考慮すると、内省は安価ではありません。
謙虚なコードコメント-非常に控えめな形式のコードポリシング。と言う簡単な行// IMPORTANT - don't add arguments before $second