getopt を使用してコマンド ライン引数を取得するサード パーティ製ライブラリを使用するコンポーネントをテストしようとしています。
PHPunit内でこれを機能させる方法はありますか?
コンポーネント呼び出しの前にこれを挿入しようとしました:
$args = explode( ' ', 'scriptName -q staging_to_xxx -w 250 -c 500' );
$_SERVER['argv'] = $args;
しかし、それはうまくいきません。
getopt を使用してコマンド ライン引数を取得するサード パーティ製ライブラリを使用するコンポーネントをテストしようとしています。
PHPunit内でこれを機能させる方法はありますか?
コンポーネント呼び出しの前にこれを挿入しようとしました:
$args = explode( ' ', 'scriptName -q staging_to_xxx -w 250 -c 500' );
$_SERVER['argv'] = $args;
しかし、それはうまくいきません。
php.ini 設定を使用してregister_argc_argv=false
、argv および argc グローバルを設定できます。getopt はグローバル変数を使用しているように見えます。つまり、このアプローチが機能することを意味します。
<?php
$GLOBALS['argv']=array(
'argv_test.php',
'-a999',
'-b',
);
$GLOBALS['argc']=count($argv);
var_export(getopt("a:b"));
?>
そのスクリプトを 'argv_test.php' と呼んでいる場合は、まず通常どおり実行します。
$ php argv_test.php -a777 -b
array (
'a' => '777',
'b' => false,
)
次に、ini 設定をオーバーライドして実行します。
$ php -d register_argc_argv=false argv_test.php
array (
'a' => '999',
'b' => false,
)