さまざまなパラメーター化された関数がたくさんあるスクリプトがあります。スクリプトで関数呼び出しをハードコーディングする代わりに、コマンドラインからこれらの関数のいずれかを呼び出して引数を渡すことは可能ですか?
参考:コマンドラインから簡単なPHPスクリプトを実行する方法を知っています
関数を完全に呼び出すわけではありません。script.phpには約5つの異なる関数があり、1つだけを呼び出すことを検討していることを覚えておいてください。それは可能ですか?
さまざまなパラメーター化された関数がたくさんあるスクリプトがあります。スクリプトで関数呼び出しをハードコーディングする代わりに、コマンドラインからこれらの関数のいずれかを呼び出して引数を渡すことは可能ですか?
参考:コマンドラインから簡単なPHPスクリプトを実行する方法を知っています
関数を完全に呼び出すわけではありません。script.phpには約5つの異なる関数があり、1つだけを呼び出すことを検討していることを覚えておいてください。それは可能ですか?
いいえ、直接行うことはできません。いくつかのオプションがあります。
アップデート:
最初に渡されたパラメーターを関数呼び出しとして使用する例を次に示します。
if(function_exists( $argv[1] ))
call_user_func_array($argv[1], $argv);
php script.php arg1 arg2
スクリプトで$argv[1]、$ argv[2]...などとしてアクセスします。
getopt()
CLIパラメーターを取ります。
php /path/to/myscript.php -a foo -b bar -c baz
$arguments = getopt("a:b:c:");
print_r($arguments);
Array
(
[a] => foo
[b] => bar
[c] => baz
)
関数argがある場合でも、bを渡すことができる$arguments[a]();
呼び出しを関数にします。foo();
あなたが何を求めているのか100%確信はありませんが、実行は次のようになります
php script.php arg1 arg2 arg3
あなたはすでにそれを知っているようです。スクリプト自体の中でこれらの引数にアクセスする方法は、変数を使用する$argv
ことで$argv[0]
あり、スクリプト、などです。それが機能しない場合は、を使用します。$argv[1]
"arg1"
$_SERVER['argv']
オプションについては、次のように解析できますgetopt
コマンドラインスクリプトで、最初の引数を呼び出す関数として使用し、続いて引数を使用してスクリプトに渡すことができます。引数はマジック配列変数に表示されます$argv
。
// Zero'th "argument" is just the name of your PHP script
$name_of_php_script = array_unshift($argv);
// Next argument will be your callback
$callback = array_unshift($argv);
// Remaining arguments are your parameters
call_user_func_array($callback, $argv);
明らかに、セキュリティのために物事をより複雑にしたり、ある種の特別な値を渡したりしたい場合がありますが、これは質問で説明する基本的なロジックを実行します。
オプションを記述してから、その関数をその関数に渡すことができます(例:myscript.php -function my_function)
次に、スクリプトで次のような関数を呼び出します
$argv[1]()