显示行号
|
选择喜欢的代码风格
默认
GitHub
Dune
LakeSide
Plateau
Vibrant
Blue
Eighties
Tranquil
PHP 是为开发 Web 应用而创建,不过它的命令行脚本接口(CLI)也非常有用。PHP 命令行编程可以帮你完成自动化的任务,如测试,部署和应用管理。
CLI PHP 编程非常强大,可以直接调用你自己的程序代码而无需创建 Web 图形界面,需要注意的是 不要 把 CLI PHP 脚本放在公开的 web 目录下!
在命令行下运行 PHP:
> php -i
选项 -i 将会打印 PHP 配置,类似于 phpinfo() 函数。
选项 -a 提供交互式 Shell,和 Ruby 的 IRB 或 Python 的交互式 Shell 相似,此外还有很多其他有用的命令行选项。
接下来写一个简单的 “Hello, $name” CLI 程序,先创建名为 hello.php 的脚本:
if($argc != 2) {
echo "Usage: php hello.php [name].\n";
exit(1);
}
$name = $argv[1];
echo "Hello, $name\n";
PHP 会在脚本运行时根据参数设置两个特殊的变量,$argc 是一个整数,表示参数个数,$argv 是一个数组变量,包含每个参数的值, 它的第一个元素一直是 PHP 脚本的名称,如本例中为 hello.php。
命令运行失败时,可以通过 exit() 表达式返回一个非 0 整数来通知 Shell,常用的 exit 返回码可以查看列表.
运行上面的脚本,在命令行输入:
> php hello.php
Usage: php hello.php [name]
> php hello.php world
Hello, world
print_r($argv);
?>
#output:
D:\>\wamp\bin\php\php5.3.0\php.exe \tools\index.php bac ddd
Array
(
[0] => \tools\index.php #第一个自变量总是脚本自己的名称
[1] => bac
[2] => ddd
)
正如你可以从输出的结果看到的,传递给 index.php 的值会自动地作为数组元素出现在 $argv 里。要注意的是,$argv 的第一个自变量总是脚本自己的名称。
使用标准的输入和输出
PHP CLI会定义三个常量,以便让在命令行提示符下与解释器进行交互操作更加容易。这些常量见下表
#
常量
说明
1
STDIN
标准的输入设备
2
STDOUT
标准的输出设备
3
STDERR
标准的错误设备
你可以在自己的PHP脚本里使用这三个常量,以接受用户的输入,或者显示处理和计算的结果。
实例
// ask for input
fwrite(STDOUT, "Enter your name: ");
// get input
$name = trim(fgets(STDIN));
// write input back
fwrite(STDOUT, "Hello, $name!");
?>output:
在这个脚本里,fwrite() 函数首先会向标准的输出设备写一条消息,询问用户的姓名。然后它会把从标准输入设备获得的用户输入信息读取到一个 PHP 变量里,并它把合并成为一个字符串。然后就用 fwrite() 把这个字符串打印输出到标准的输出设备上。
D:\>\wamp\bin\php\php5.3.0\php.exe \tools\index.php
Enter your name: kkk
Hello, kkk!
使用CLI参数
除了用命令行传递PHP脚本参数,还可以传递 PHP CLI 参数以更改其工作方式。
#参数 说明
-a 交互式运行Run interactively
-c path 从path读取php的.ini文件
-n 不用读取php的.ini文件就直接运行
-m 列出经过编译的模块
-i 显示有关PHP构建的信息
-l 检查PHP脚本的句法
-s 以彩色方式显示源代码
-w 显示去掉注释之后的源代码
-h 显示帮助
交互模式
你还可以以交互方式使用 PHP CLI,也就是输入命令,马上获得结果。
要得到这种效果,只需要使用一个参数调用 CLI 可执行文件就行了,就像下面这样:
shell> /path/to/php -a
Interactive mode enabled
echo mktime();
1121187283
echo 2+2;
4
exit();
shell>
或者,你可以不使用 -a 参数就调用CLI可执行文件,直接输入完整的脚本或者代码段。
用 Ctrl -D 来结束代码段,并让CLI来执行它。见下面的例子:
shell> /path/to/php
echo date("d-M-Y h:i:s", time());
?>
PHP 扩展阅读:
发表评论