CLI経由でのコントローラの実行

アプリケーションのコントローラーをブラウザのURL経由で呼び出すだけでなく、コマンドラインインターフェース(CLI)経由でロードすることもできます。

注意

CLI経由でコントローラーを呼び出す代わりに、CLIスクリプトにはSparkコマンドを使用することを推奨します。詳細については、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');

詳細については、ルートページを参照してください。

警告

自動ルーティング(レガシー)を有効にして、コマンドファイルを app/Controllers に配置した場合、自動ルーティング(レガシー) を利用して、誰でもHTTP経由でコマンドにアクセスできる可能性があります。

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からアクセス可能なスクリプトをより快適に作成するための追加ツールを提供します。