$myVar=myFunction(array_reverse(explode('.', $_SERVER['SERVER_NAME'])));
このような入れ子関数に何か問題がありますか?
これを行うことは完全に有効ですが、読みやすくしてください。15個の関数呼び出しをネストするか、それぞれにいくつかのパラメーターを持つ少数の関数呼び出しをネストすると、非常に面白くないデバッグエクスペリエンスが得られます。
各関数が常に目的の型を返すことを保証できる限り、これは問題ありません。たとえば、関数がFALSE値を返す可能性がある場合、予期しない値にキャストされる可能性があります。
提供されている例は、explode
(呼び出されたとおりarray_reverse
に)両方とも常に配列を返すために機能します。
反例:
mysqli_query(mysqli_connect(...), 'INSERT INTO tbl VALUES ....');
mysqli_connect
リソースを返す可能性があるため、またはこのFALSE
ようにチェーンしないでください。戻り値が正しいかどうかを常にチェックする必要があります。
いいえ、それを行うことは完全に有効です
コードを理解しにくくし、したがって保守するのが難しくなるため、これは悪い習慣かもしれません。
この問題を克服するための良い習慣は、コードに(重く)コメントを付けることです。
人々はいつもそのように機能します。関数はこのように使用されることを意図しています。関数は値を返すことができるため、変数を関数に割り当てて、その関数の値をPHP変数に取り込むことは意味があります。
関数が値を返すことを神に感謝します。さもなければ、それを別の方法で考えるのは混乱するでしょう...