2009-07-07 190 views
2

是否有交互使用php命令行的任何howtos?我發現了很多關於運行在文本文件中sripts,但不是真正的與提示的殼,我在命令中輸入:如何交互使用php命令行?

$ php -a 
Interactive shell 

php > echo "hello world"; 
hello world 
php > $a = 1; 
php > echo $a; 
1 
php > exit; 
$ 

當我去到Linux shell並運行php -a我得到的PHP貝殼。我可以加載生活在文件中的類嗎?這裏有什麼規則?

+0

Phpsh交互式演練在這裏:http://stackoverflow.com/a/20451380/445131 – 2014-06-02 18:43:03

回答

3

規則與普通的PHP腳本沒有什麼不同 - 就像把它從一個非常慢的磁盤上讀取一樣......唯一真正的區別是它不能提前讀取,所以你必須定義函數在你使用它們之前。

您可以使用include或require作爲正常的加載類。

1

我相信你可以使用include。您可以包含與您調用該命令的位置相關的文件。

1

還有另外一個微小的差別,如果你依靠的PHP類自動加載行爲,可能是有問題的:

注意:如果使用PHP的CLI交互模式 自動加載不可用。

來源:Using PHP from the command lineAutoloading Objects

+0

自動加載似乎在CLI交互模式下正常工作。 – dave1010 2011-07-19 13:02:52

2

PHP的交互模式是比較有限。您可能會發現phpsh更有用。

5

說明在Ubuntu 10.04 Server版本中安裝phpsh。

獲取phpsh源,並提取

wget http://github.com/facebook/phpsh/zipball/master 

    sudo apt-get install unzip 

    mkdir temp 

    mv facebook-phpsh-8438f3f.zip temp 

    cd temp 

    unzip facebook-phpsh-8438f3f.zip 

phpsh使用Python,安裝依賴

sudo apt-get install python-setuptools 

    sudo apt-get install linux-headers-$(uname -r) 

    sudo apt-get install build-essential 

    sudo apt-get install python-dev 

    sudo apt-get install sqlite3 libsqlite3-dev 

    sudo easy_install pysqlite 

    sudo apt-get install libncurses5-dev 

    sudo easy_install readline 

設置phpsh,運行和看到的作品

sudo python setup.py install 

    phpsh 

    $a = array("a"=>1,"b"=>2); 

    print_r($a) 
0

使用Boris

Python有一個。 Ruby有一個。 Clojure有一個。現在PHP也有一個。 Boris是PHP缺少的REPL(read-eval-print loop),允許 開發人員以 交互方式在終端上試驗PHP代碼。如果你犯了一個錯誤,沒關係,鮑里斯 將報告錯誤,併爲進一步的輸入而關注。