2014
May
20

如果你有用 PHP 来写一些 script 指令,那么一定会遇到参数传送给 PHP 的问题,假设今天我要写一个程式,将 PHP 原始码的注解删除,并且将结果转存到另一个资料夹,这时你可能会这样写:

php removeComments.php ./src ./result

用上面的参数传递会有一个很严重的问题,就是使用的人看不懂 ./src 代表什么,而 ./result 又代表什么。

我写了一个简单的程式,将参数转换成一个容易阅读的方式,如下。

php removeComments.php --source=./src --destination=./result
arguments
  1. <?php
  2. function arguments($argv) {
  3. $ARG = array();
  4. $n = count($argv);
  5. for ($i = 0; $i < $n ; $i++) {
  6. $val = $argv[$i];
  7. if (preg_match('/^[-]{1,2}([^=]+)=[s]*([^s]+)/', $val, $match)) {
  8. $ARG[$match[1]] = $match[2];
  9. } else if (preg_match('/^[-]{1,2}([^=s]+)$/', $val, $match)) {
  10. $i++;
  11. $ARG[$match[1]] = $argv[$i];
  12. }
  13. }
  14. return $ARG;
  15. }
  16.  
  17. $argv = arguments($_SERVER['argv']);
  18. print_r($argv);
  19. /*
  20. array(
  21. "source" => "./src",
  22. "destination" => "../result"
  23. )
  24. */

除了上述范例中使用 「--」开头,「 =」来指定参数外 ,还支援空白的方式传递参数:

php removeComments.php --source src --destination result

回應 (Leave a comment)