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