php在cli模式下STDOUT、STDIN、$argv、$argc的用法
阿新 • • 發佈:2018-11-26
php在cli模式下STDOUT和STDIN變數的用法可以用如下程式碼來解釋:
<?php
//提示使用者輸入姓名
fwrite(STDOUT, "what's your name");
//獲取使用者輸入資料
$name = trim(fgets(STDIN));
//在客戶端輸出
fwrite(STDOUT, "Hello,$name");
在命令列下執行結果:
在命令列模式下還有兩個變數$argc和$argv,一個是$argv變數,它通過命令列把傳遞給PHP指令碼的引數儲存為單獨的陣列元素;另一個是$argc變數,它用來儲存$argv數組裡元素的個數。
測試程式碼如下:
<?php
print_r($argv);
?>
在命令列下執行結果:
注意,php會將檔名作為陣列的第一個值。
<?php
print_r($argc);
?>
在命令列下執行結果:
在codeigniter框架中判定php的執行模式是否是cli模式的程式碼如下:
if ( ! function_exists('is_cli')) { /** * Is CLI? * * Test to see if a request was made from the command line. * * @return bool */ function is_cli() { return (PHP_SAPI === 'cli' OR defined('STDIN')); } }
以cli模式執行ci框架的一個例子:
首先建立一個簡單的控制器。使用你的文字編輯器,建立一個叫做 tools.php 的檔案,並且輸入如下程式碼:
<?php
class Tools extends CI_Controller {
public function message($to = 'World')
{
echo "Hello {$to}!".PHP_EOL;
}
}
?>
然後將這個檔案儲存到你的 application/controllers/ 資料夾裡。
現在正常情況下你可以通過你網站的 URL 來訪問它:
example.com/index.php/tools/message/to
除此之外,我們也可以在 Mac/Linux 中開啟終端,或者在 Windows 下進入“執行”輸入“cmd”,並進入我們的 CodeIgniter 專案的目錄。
$ cd /path/to/project;
$ php index.php tools message
如果你跟著一步步下來,你應該會看到 Hello World!。
$ php index.php tools message "John Smith"
這裡我們像使用 URL 引數一樣給它傳遞了一個引數。“John Smith”作為一個引數被傳遞了,並且輸出也變成:Hello John Smith!。
很好奇是怎麼實現的,以後研究完了ci的原始碼再做補充。