2014
May
20
如果你有用 PHP 来写一些 script 指令,那么一定会遇到参数传送给 PHP 的问题,假设今天我要写一个程式,将 PHP 原始码的注解删除,并且将结果转存到另一个资料夹,这时你可能会这样写:
php removeComments.php ./src ./result
用上面的参数传递会有一个很严重的问题,就是使用的人看不懂 ./src 代表什么,而 ./result 又代表什么。
我写了一个简单的程式,将参数转换成一个容易阅读的方式,如下。
php removeComments.php --source=./src --destination=./result
arguments
- <?php
- function arguments($argv) {
- $ARG = array();
- $n = count($argv);
- for ($i = 0; $i < $n ; $i++) {
- $val = $argv[$i];
- if (preg_match('/^[-]{1,2}([^=]+)=[s]*([^s]+)/', $val, $match)) {
- $ARG[$match[1]] = $match[2];
- } else if (preg_match('/^[-]{1,2}([^=s]+)$/', $val, $match)) {
- $i++;
- $ARG[$match[1]] = $argv[$i];
- }
- }
- return $ARG;
- }
- $argv = arguments($_SERVER['argv']);
- print_r($argv);
- /*
- array(
- "source" => "./src",
- "destination" => "../result"
- )
- */
除了上述范例中使用 「--」开头,「 =」来指定参数外 ,还支援空白的方式传递参数:
php removeComments.php --source src --destination result
回應 (Leave a comment)