通过 CLI 运行控制器
除了通过浏览器中的 URL 调用应用程序的 控制器 之外,还可以通过命令行界面 (CLI) 加载它们。
注意
建议使用 Spark 命令来创建 CLI 脚本,而不是通过 CLI 调用控制器。有关详细信息,请参阅 Spark 命令 和 创建 Spark 命令 页面。
让我们试一试:Hello World!
创建控制器
让我们创建一个简单的控制器,以便您看到它的实际运行效果。使用您的文本编辑器,创建一个名为 Tools.php 的文件,并将以下代码放入其中
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class Tools extends Controller
{
public function message($to = 'World')
{
return "Hello {$to}!" . PHP_EOL;
}
}
注意
如果您使用 自动路由(改进版),请将方法名称更改为 cliMessage()
。
然后将文件保存到您的 app/Controllers/ 目录中。
定义路由
如果您使用自动路由,请跳过此步骤。
在您的 app/Config/Routes.php 文件中,您可以创建仅从 CLI 访问的路由,就像创建任何其他路由一样简单。您不需要使用 get()
、post()
或类似方法,而是使用 cli()
方法。其他所有内容都与正常的路由定义完全相同
<?php
$routes->cli('tools/message/(:segment)', 'Tools::message/$1');
有关更多信息,请参阅 路由 页面。
通过 CLI 运行
现在,您通常会使用类似于以下的 URL 访问您的网站
example.com/index.php/tools/message/to
相反,我们将打开 Mac/Linux 中的终端或在 Windows 中转到运行 > “cmd”,然后导航到 CodeIgniter 项目的 Web 根目录。
$ cd /path/to/project/public
$ php index.php tools message
如果您操作正确,您应该看到打印出“Hello World!”。
$ php index.php tools message "John Smith"
在这里,我们以与 URL 参数相同的方式传递一个参数。“John Smith”作为参数传递,输出为
Hello John Smith!
这就是基础!
简而言之,这就是关于命令行控制器的所有内容。请记住,这只是一个普通的控制器,因此路由和 _remap()
可以正常工作。
注意
_remap()
不适用于 自动路由(改进版)。
如果您想确保通过 CLI 运行,请检查 is_cli()
的返回值。
然而,CodeIgniter 提供了额外的工具,使创建可访问 CLI 的脚本更加愉快,包括仅限 CLI 的路由和一个帮助您使用仅限 CLI 的工具的库。