【问题标题】:How to use the PHP command line interactively?如何以交互方式使用 PHP 命令行?
【发布时间】:2009-07-07 09:25:36
【问题描述】:

有没有交互式使用 PHP 命令行的方法?

我发现了很多关于运行文本文件中的脚本的信息,但并不是关于带有我输入命令提示符的 shell:

$ php -a
Interactive shell

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

当我转到 Linux shell 并运行 php -a 时,我得到了 PHP shell。我可以加载文件中的类吗?这里有什么规则?

【问题讨论】:

标签: php shell


【解决方案1】:

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)

【讨论】:

    【解决方案2】:

    这些规则与普通的 PHP 脚本没有任何不同——把它想象成从一个非常慢的磁盘读取......唯一真正的区别是它不能提前读取,所以你必须在之前定义函数你使用它们。

    您可以正常使用 include 或 require 来加载类。

    【讨论】:

      【解决方案3】:

      php 的交互模式有些受限。您可能会发现phpsh 更有用。

      【讨论】:

        【解决方案4】:

        我相信你可以使用包含。您可以包含与您调用该命令的位置相关的文件。

        【讨论】:

          【解决方案5】:

          如果您依赖 PHP 的 class-autoloading-behavior,还有另一个可能会出现问题的细微差别:

          注意:自动加载在以下情况下不可用 在 CLI 交互模式下使用 PHP。

          来源:Using PHP from the command lineAutoloading Objects

          【讨论】:

          • 自动加载在 CLI 交互模式下对我来说似乎工作正常。
          【解决方案6】:

          使用Boris

          Python 有一个。鲁比有一个。 Clojure 有一个。现在 PHP 也有一个。 Boris 是 PHP 缺少的 REPL(读取-评估-打印循环),允许 开发人员在终端中试验 PHP 代码 互动方式。如果你犯了错误,没关系,鲍里斯 将报告错误并引起注意以获取进一步的输入。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-02-20
            • 1970-01-01
            • 2011-02-25
            • 1970-01-01
            • 2012-07-03
            • 1970-01-01
            • 2014-02-13
            • 1970-01-01
            相关资源
            最近更新 更多