用慣了Linux系統的使用者應該都知道,Linux的很多命令都支援選項和值的輸入,例如
rm -f hello.txt、
ls -al、
netstat -tnl等,那麼如何讓PHP指令碼在cli模式下執行時也支援選項和值的輸入呢?有兩種方法:
使用getopt()函數
假設現在需要一個PHP指令碼支援三個選項的輸入:
-a:不接受值輸入
-b:接受值輸入
-c:接受值輸入,並該值可選
根據上述要求,可以編寫PHP指令碼:
functionmain($args) { var_dump($args);}/* * 選項字元後面不帶冒號,表示該選項不支援值輸入 * 選項字元後面帶一個冒號,表示該選項支援值輸入 * 選項字元後面帶兩個冒號,表示該選項支援值輸入,且值可選 */$args = getopt('ab:c::');main($args);
然後使用命令執行該指令碼,這裡以Linux為例,並假設指令碼名為test.php,注意./php和test.php之間不需要-f選項:
./php test.php -a -b=valueOfB -c=valueOfC
輸出:
因為c選項的值是可選的,我們試一下c選項不傳值會是什麼情況:
可以看到,沒有值的選項對應的數組value是false
在這裡要注意一點,選項和值之間是使用等號“=”串連的,或者把等號省略掉也可以,不可以使用空格來分割選項和值,例如-b valueOfB,否則可能會擷取不到值。
getopt()還支援兩個橫杠開頭的選項,例如--a,詳細資料可以參考getopt()的第二個參數$longopts
使用$argv變數
如果只是單純的想往指令碼傳遞一些值,那麼可以使用$argv這個變數,關於這個變數的詳細資料,可以參閱:http://php.net/manual/zh/reserved.variables.argv.php
PHP指令碼:
var_dump($argv);
執行命令./php test.php valueOfA valueOfB valueOfC
輸出:
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
以上就介紹了如何讓PHP指令碼在cli模式下執行時可接受選項和值的輸入,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。