12

PHPでは、デフォルトの引数を次のように関数に渡すことができます

function func_name(arg1,arg2=4,etc...) {

しかし、私の理解では、関数呼び出しを渡すことができないため、これは違法です:

function func2_name(arg1,arg2=time(),etc...) {

したがって、関数値を実行したい場合 (時間関数のように、実行前に値を知ることができないと想像してください)、次のような面倒な作業を行う必要があります。

function func3_name(arg1,arg2=null,etc...) {
    if(arg2==null) arg2 = time();

関数呼び出しの値をphpのデフォルト引数として渡すためのより良い方法を誰かが知っているかどうか疑問に思っていましたか?ありがとう。

また、php 言語設計に、関数呼び出しをデフォルトの引数として許可しない根本的な理由がありますか (前処理で何か特別なことをするなど)、またはこれが将来のバージョンの機能になる可能性はありますか?

4

2 に答える 2

13

まあ、簡単な答えは、私の知る限り、それを行うためのより良い方法はないということです。ただし、三項演算子を使用すると、見栄えを良くすることができます。

function func3_name(arg1,arg2=null,etc...) {
  arg2 = (arg2==null ? time() : arg2);
}
于 2012-06-11T19:37:51.373 に答える