3
$myVar=myFunction(array_reverse(explode('.', $_SERVER['SERVER_NAME'])));

このような入れ子関数に何か問題がありますか?

4

5 に答える 5

2

これを行うことは完全に有効ですが、読みやすくしてください。15個の関数呼び出しをネストするか、それぞれにいくつかのパラメーターを持つ少数の関数呼び出しをネストすると、非常に面白くないデバッグエクスペリエンスが得られます。

于 2012-08-24T20:27:09.437 に答える
2

各関数が常に目的の型を返すことを保証できる限り、これは問題ありません。たとえば、関数がFALSE値を返す可能性がある場合、予期しない値にキャストされる可能性があります。

提供されている例は、explode(呼び出されたとおりarray_reverseに)両方とも常に配列を返すために機能します。

反例:

mysqli_query(mysqli_connect(...), 'INSERT INTO tbl VALUES ....');

mysqli_connectリソースを返す可能性があるため、またはこのFALSEようにチェーンしないでください。戻り値が正しいかどうかを常にチェックする必要があります。

于 2012-08-24T20:34:19.530 に答える
1

いいえ、それを行うことは完全に有効です

于 2012-08-24T20:23:04.383 に答える
1

コードを理解しにくくし、したがって保守するのが難しくなるため、これは悪い習慣かもしれません。
この問題を克服するための良い習慣は、コードに(重く)コメントを付けることです。

于 2012-08-24T20:27:48.257 に答える
0

人々はいつもそのように機能します。関数はこのように使用されることを意図しています。関数は値を返すことができるため、変数を関数に割り当てて、その関数の値をPHP変数に取り込むことは意味があります。

関数が値を返すことを神に感謝します。さもなければ、それを別の方法で考えるのは混乱するでしょう...

于 2012-08-24T20:30:01.220 に答える