摘要:最近發現好幾個框架都用上了PHP命令行來創建模塊或控制器,這種模式對初學者的不太友好,尤其是剛接觸MVC思想的人,又提高了入門難度,今天我就簡單的說一下他們的原理。在PHP命令行模式(cli模式)下,...
最近發現好幾個框架都用上了PHP命令行來創建模塊或控制器,這種模式對初學者的不太友好,尤其是剛接觸MVC思想的人,又提高了入門難度,今天我就簡單的說一下他們的原理。
在PHP命令行模式(cli模式)下,可以用“ php php文件名 傳入的參數 ”來運行PHP文件,例如我們創建一個test.php文件,然后運行命令:
php test.php aaa bbb
而我們的test.php里面可以用 $_SERVER['argv'] 來接收參數:
<?php var_dump($_SERVER['argv']);
$_SERVER['argv']
傳遞給該腳本的參數的數組。當腳本以命令行方式運行時,argv 變量傳遞給程序 C 語言樣式的命令行參數。當通過 GET 方式調用時,該變量包含query string。
簡單的來說,命令行下,第一個參數$_SERVER['argv'][0]是腳本名,其余的是傳遞給腳本的參數.
運行結果
既然能收到php命令行傳入的參數了,那就可以根據你的需求任意的發揮了!
其實到這里原理大家都明白了,但為了方便起見,總不能一直加.php的后綴吧,于是就在框架的根目錄下創建了一個沒有后綴的文件,例如我在框架的根目錄下創建一個 文件名叫做 “yzm” 的文件,yzm的內容是這樣的:
#!/usr/bin/env php <?php require 'test.php';
#!/usr/bin/env php寫法的好處
這種寫法主要是為了讓你的程序在不同的系統上都能適用。
不管你的php是在/usr/bin/php還是/usr/local/bin/php
#!/usr/bin/env php會自動的在你的用戶PATH變量中所定義的目錄中尋找php來執行的。
同理,python腳本開頭寫法:
#!/usr/bin/env python
而這個文件又包含了剛才我們創建的test.php文件,所以這一番下來就省去了輸入后綴的麻煩,于是我們這樣寫跟剛才的效果是一樣的: