透過命命列執行¶
除了透過瀏覽器中以 URL 呼叫應用程式的 控制器 外,你還可以透過命令列介面( CLI )來載入它們。
為何需要透過命令列介面執行¶
從命令列介面執行 CodeIgniter 的原因有很多,雖然它們並不是這麼顯而易見。
- 執行你的排程工作,不需要使用 wget 或 curl 。
- 透過檢查
is_cli()
的回傳值,使你的排程工作無法在 URL 中載入。 - 製作互動式的任務,可以做一些特別的事情,比如:權限設定、修剪快取,以及執行備份等。
- 與其他語言進行整合,例如: 一個隨意的 C++ 腳本可以呼叫一個命令,然後在你的模型中執行這個程式碼。
讓我們試試: Hello World!¶
讓我們建立一個簡單的控制器,這樣你就可以看到操作的過程。使用你的文字編輯器,建立一個名為 Tools.php 的檔案,並在其中寫入以下程式碼:
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class Tools extends Controller
{
public function message($to = 'World')
{
echo "Hello {$to}!" . PHP_EOL;
}
}
接著,把這個檔案儲存在你的 app/Controllers/ 目錄底下。
通常你會使用這樣的 URL 造訪你的網站:
example.com/index.php/tools/message/to
但現在,我們打開 Mac/Linux 的 Terminal ,或者在 Windows 中打開 cmd ,然後定位至 CodeIgniter 的專案根目錄。
$ 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()
都能夠正常工作。
然而, CodeIgniter 提供了額外的工具,讓你可以更加愉快地建立命令列介面。包括只限於命令列的路由以及幫助你開發該路由工具的程式庫。