1

私はたまたま WordPress ブログにいくつかの変更を加えていて、オプションのパラメーターを解析して関数に設定するためにparse_str( http://php.net/parse_str ) を使用していることに気付きました。

配列を送信するよりもこれに利点があるかどうか疑問に思っていますか?

例:

配列あり:

$blahOptions = array(
    'option_1' => true,
);
BlahArray($blahOptions);
function BlahArray($options = array()) {
    $defaults = array(
        'option_1' => false,
        'option_2' => 'blah',
    );
    // this would probably be in a function to be used everywhere
    foreach ($defaults as $defaultOption => $defaultValue) {
        if (!isset($options[$defaultOption])) $options[$defaultOption] = $defaultValue;
    }
}

parse_str:

$blahOptions = 'option_1=1';
BlahString($blahOptions);
function BlahString($options = '') {
    $defaults = array(
        'option_1' => false,
        'option_2' => 'blah',
    );
    parse_str($options, $defaults);
    $options = $defaults;
}
4

3 に答える 3

6

いいえ、それは関数パラメータ引数を渡すばかげた方法のようです。$_GET または $_POST 変数またはそれらの行に沿って何かを再作成する必要がある場合は理解できましたが、関数へのパラメーターについては? それはまさにコードの匂いです。

配列を使用し、代わりにextract()を使用する必要があります。私は以前に Wordpress を使用したことがありますが、私のアドバイスは、コードは距離を置いて保管することです。これはモデル プログラミングの例ではありません。

于 2009-05-05T22:25:57.457 に答える
2

いいえ、利点よりも欠点の方が多いです。

単一の文字列を使用している場合は、文字列値のみを渡すことができます。配列を使用すると、すべての PHP データ型を使用でき、すべての要素の値の型は互いに独立しています。

于 2009-05-05T22:21:36.593 に答える
1

parse_str を使用すると、URL からクエリ文字列をドロップできる可能性があり、関数が機能します。配列を使用していて、クエリ文字列を使用する場合は、関数を呼び出す前にすべてを配列に列挙する必要があります。

これが最善の方法であると完全に確信しているわけではありませんが、柔軟性を少し追加できることはわかります。

于 2009-05-05T22:22:38.260 に答える