CodeIgniter4でCLIコマンドを作成する

この記事は CodeIgniter Advent Calendar 2020 - Qiita の18日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。

CodeIgniter4 には CLI コマンドを作成する機能も含まれています。

なお、CodeIgniter3 のように、コントローラを CLI から実行することも可能ですが、この記事では扱いません。

AppInfo コマンドの作成

Custom CLI Commands — CodeIgniter 4.0.4 documentation にある、アプリの情報を表示するコマンドを作成してみます。

ファイルの作成

app/Commands フォルダを作成し、AppInfo.php を作成します。

<?php
namespace App\Commands;

use CodeIgniter\CLI\BaseCommand;
use CodeIgniter\CLI\CLI;

class AppInfo extends BaseCommand
{
    protected $group = 'demo';
    protected $name = 'app:info';
    protected $description = 'Displays basic application information.';

    public function run(array $params)
    {
    }
}

spark を実行します。

$ php spark 


CodeIgniter CLI Tool - Version 4.0.4 - Server-Time: 2020-12-15 10:08:01am


...

demo
  app:info           Displays basic application information.

コマンドリストの最後に「demo」があり、プロパティに設定した内容が表示されています。

コマンドの実装

run() メソッドにコードを追加します。

<?php

namespace App\Commands;

use CodeIgniter\CLI\BaseCommand;
use CodeIgniter\CLI\CLI;

class AppInfo extends BaseCommand
{
    protected $group = 'demo';
    protected $name = 'app:info';
    protected $description = 'Displays basic application information.';

    public function run(array $params)
    {
        CLI::write('PHP Version: ' . CLI::color(phpversion(), 'yellow'));
        CLI::write(
            'CI Version: ' . CLI::color(
                \CodeIgniter\CodeIgniter::CI_VERSION,
                'yellow'
            )
        );
        CLI::write('APPPATH: ' . CLI::color(APPPATH, 'yellow'));
        CLI::write('SYSTEMPATH: ' . CLI::color(SYSTEMPATH, 'yellow'));
        CLI::write('ROOTPATH: ' . CLI::color(ROOTPATH, 'yellow'));
        CLI::write(
            'Included files: ' . CLI::color(
                count(get_included_files()),
                'yellow'
            )
        );
    }
}

コマンドの実行

$ php spark app:info
CodeIgniter CLI Tool - Version 4.0.4 - Server-Time: 2020-12-15 10:14:37am

PHP Version: 7.4.13
CI Version: 4.0.4
APPPATH: /Users/kenji/work/codeigniter/ci4-news/app/
SYSTEMPATH: /Users/kenji/work/codeigniter/ci4-news/vendor/codeigniter4/framework/system/
ROOTPATH: /Users/kenji/work/codeigniter/ci4-news/
Included files: 115

アプリの情報が表示されました。

この記事は CodeIgniter Advent Calendar 2020 - Qiita の18日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。

参考

Date: 2020/12/18

Tags: codeigniter, codeigniter4, cli