Вызов функции в скрипте PHP из командной строки

У меня есть скрипт с множеством различных параметризованных функций. Можно ли вызывать любую из этих функций из командной строки и передавать аргументы вместо того, чтобы мне было сложно записать вызовы функций в скрипте?

FYI: Я знаю, как выполнить простой скрипт PHP из командной строки

не совсем вызывает функцию, помните, что script.php имеет около 5 различных функций, и я ищу, чтобы позвонить только 1, возможно ли это

Нет, вы не можете сделать это напрямую. У вас есть несколько вариантов:

  • Поместите каждую функцию в отдельный файл php и вызовите файл php
  • используйте первый аргумент, переданный в php-файл в качестве имени функции, и напишите несколько строк кода, чтобы выбрать правильную функцию.

Обновить:

Ниже приведен пример использования первого переданного параметра в качестве вызова функции:

if(function_exists( $argv[1] )) call_user_func_array($argv[1], $argv); 

php script.php arg1 arg2 к ним как $ argv [1], $ argv [2] … и т. д. в вашем скрипте.

Не 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

то в вашем скрипте вызовите функцию like

 $argv[1]() 

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 ) 

Сделать его функцией $arguments[a](); вызвать foo(); вы можете перейти в b также, если у вас есть функция arg.