CodeIgniter4 通過(guò)CLI方式運(yùn)行

2020-08-17 17:52 更新

除了通過(guò)在瀏覽器中輸入U(xiǎn)RL的方式訪(fǎng)問(wèn)我們的應(yīng)用程序 Controllers 我們還可以通過(guò)命令行(CLI)的方式調(diào)用程序。

什么是 CLI ?

命令行是一個(gè)基于文本的與計(jì)算機(jī)交互方式。更多的內(nèi)容,可以通過(guò) 維基百科的文章 了解。

為什么要通過(guò)命令行的方式運(yùn)行?

對(duì)于 CodeIgniter 而言,有很多理由需要你使用命令行。但他們并非顯而易見(jiàn)。

  • 在使用 wget 或者 curl 的方式執(zhí)行你的定時(shí)腳本。
  • 通過(guò)獲取 is_cli() 的返回值,使你的定制腳本無(wú)法通過(guò)URL訪(fǎng)問(wèn)。
  • 編寫(xiě)交互式的“任務(wù)”,比如一些需要設(shè)置權(quán)限,修改緩存文件夾,執(zhí)行備份等操作。
  • 和其他語(yǔ)言編寫(xiě)的其他應(yīng)用程度交互,比如:一個(gè)隨機(jī)的 C++ 腳本可以通過(guò)調(diào)用一個(gè)命令的方式在你編寫(xiě)的模塊中執(zhí)行。

讓我們嘗試一下: Hello World!

首先我們來(lái)新建一個(gè)簡(jiǎn)單的控制器,這樣你就可以看到他的行為。使用你的編輯器,新建一個(gè)名為 Tools.php 的文件,并在文件中寫(xiě)入如下代碼:

<?php
class Tools extends \CodeIgniter\Controller {


        public function message($to = 'World')
        {
                echo "Hello {$to}!".PHP_EOL;
        }
}

然后將這個(gè)文件保存在 application/Controllers/ 目錄下。

通常你會(huì)使用如下的URL訪(fǎng)問(wèn)你的網(wǎng)站:

example.com/index.php/tools/message/to

然而,我們現(xiàn)在要打開(kāi) Mac/Linux 下的 Terminal 或者在 Windows 下點(diǎn)擊 運(yùn)行并輸入“cmd”之后進(jìn)入我們 CodeIgniter 項(xiàng)目的 web 根目錄,并執(zhí)行以下命令:

$ cd /path/to/project/public
$ php index.php tools message

如果你的操作正確,你將會(huì)看到這個(gè)輸出 Hello World!

$ php index.php tools message "John Smith"

我們可以在這里像傳入U(xiǎn)RL參數(shù)一樣,傳入一個(gè)參數(shù)?!癑ohn Smith”這個(gè)參數(shù)作為輸入得到的的輸出如下:

Hello John Smith!

這里是基礎(chǔ)!

簡(jiǎn)而言之,就是我們要知道命令行上的控制器。需要記住的是,這是一個(gè)正常的控制器,所以路由和 _remap() 都是正常運(yùn)作的。

但是, CodeIgniter 提供了額外的工具,可以是更加輕松地創(chuàng)建 CLI 可訪(fǎng)問(wèn)的腳本:包括 CLI-only 路由和一個(gè)幫助你使用 CLI-only 工具的庫(kù)。

CLI-Only 路由

Routes.php 文件中你可以像創(chuàng)建其他路由的方式輕松新建只能通過(guò) CLI 方式訪(fǎng)問(wèn)的路由,這些路由并不是使用類(lèi)似 get()post() ,或者其他類(lèi)似的方法,在這里你需要使用 cli() 方法:

$routes->cli('tools/message/(:segment)', 'Tools::message/$1');

更多信息,可以查看這里 Routes 。

CLI 庫(kù)

CLI 庫(kù)讓我們的 CLI工作變得簡(jiǎn)單。它提供了簡(jiǎn)單的方法然我們將多種顏色的文本輸出在終端上。它還可以讓你給用戶(hù)輸出提示信息,構(gòu)建出一個(gè)更加智能的工具。

更多信息,可以查看這里 CLI Library 。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)