php在cli模式下STDOUT、STDIN、$argv、$argc的用法

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的源码再做补充。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值