5

さまざまなパラメーター化された関数がたくさんあるスクリプトがあります。スクリプトで関数呼び出しをハードコーディングする代わりに、コマンドラインからこれらの関数のいずれかを呼び出して引数を渡すことは可能ですか?

参考:コマンドラインから簡単なPHPスクリプトを実行する方法を知っています

関数を完全に呼び出すわけではありません。script.phpには約5つの異なる関数があり、1つだけを呼び出すことを検討していることを覚えておいてください。それは可能ですか?

4

6 に答える 6

9

いいえ、直接行うことはできません。いくつかのオプションがあります。

  • すべての関数を個別のphpファイルに入れて、phpファイルを呼び出します
  • phpファイルに渡された最初の引数を関数名として使用し、数行のコードを記述して正しい関数を選択します。

アップデート:

最初に渡されたパラメーターを関数呼び出しとして使用する例を次に示します。

if(function_exists( $argv[1] ))
  call_user_func_array($argv[1], $argv);
于 2012-09-18T17:51:27.317 に答える
3

php script.php arg1 arg2 スクリプトで$argv[1]、$ argv[2]...などとしてアクセスします。

于 2012-09-18T17:52:56.303 に答える
0

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();

于 2012-09-18T17:51:39.210 に答える
0

あなたが何を求めているのか100%確信はありませんが、実行は次のようになります

php script.php arg1 arg2 arg3

あなたはすでにそれを知っているようです。スクリプト自体の中でこれらの引数にアクセスする方法は、変数を使用する$argvことで$argv[0]あり、スクリプト、などです。それが機能しない場合は、を使用します。$argv[1]"arg1"$_SERVER['argv']

オプションについては、次のように解析できますgetopt

于 2012-09-18T17:51:56.300 に答える
0

コマンドラインスクリプトで、最初の引数を呼び出す関数として使用し、続いて引数を使用してスクリプトに渡すことができます。引数はマジック配列変数に表示されます$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);

明らかに、セキュリティのために物事をより複雑にしたり、ある種の特別な値を渡したりしたい場合がありますが、これは質問で説明する基本的なロジックを実行します。

于 2012-09-18T17:53:43.433 に答える
0

オプションを記述してから、その関数をその関数に渡すことができます(例:myscript.php -function my_function)

次に、スクリプトで次のような関数を呼び出します

$argv[1]()
于 2012-09-18T17:54:22.613 に答える