CodeIgniter4のsparkコマンド

CodeIgniter

CodeIgniter4の特徴としてCLIで利用できるsparkコマンドが導入されたことが挙げられます。

Laravelのartisanみたいなやつですね。

使えると開発が捗りそうなので、どんなことができるのか触ってみました。

sparkコマンドについて

sparkはappやwritableなどがあるプロジェクトルートにあります。

また、vendor/codeigniter4/frameworkにも同様のものが置かれています。

コマンド実行は上記の場所で行えますが、基本的にプロジェクトルートで行うのかなと思います。

sparkコマンドの種類

下記のようにphp spark と打つとhelpが表示されます。

php spark listでも同様に利用できるコマンドの一覧が取得できます。

# php spark

CodeIgniter v4.1.3 Command Line Tool - Server Time: 2021-07-24 00:38:19 UTC-05:00

Cache
  cache:clear        Clears the current system caches.
  cache:info         Shows file cache information in the current system.

CodeIgniter
  env                Retrieves the current environment, or set a new one.
  help               Displays basic usage information.
  list               Lists the available commands.
  namespaces         Verifies your namespaces are setup correctly.
  routes             Displays all of user-defined routes. Does NOT display auto-detected routes.
  serve              Launches the CodeIgniter PHP-Development Server.

Database
  db:create          Create a new database schema.
  db:seed            Runs the specified seeder to populate known data into the database.
  migrate            Locates and runs all new migrations against the database.
  migrate:refresh    Does a rollback followed by a latest to refresh the current state of the database.
  migrate:rollback   Runs the "down" method for all migrations in the last batch.
  migrate:status     Displays a list of all migrations and whether they've been run or not.

Encryption
  key:generate       Generates a new encryption key and writes it in an `.env` file.

Generators
  make:command       Generates a new spark command.
  make:config        Generates a new config file.
  make:controller    Generates a new controller file.
  make:entity        Generates a new entity file.
  make:filter        Generates a new filter file.
  make:migration     Generates a new migration file.
  make:model         Generates a new model file.
  make:scaffold      Generates a complete set of scaffold files.
  make:seeder        Generates a new seeder file.
  make:validation    Generates a new validation file.
  migrate:create     [DEPRECATED] Creates a new migration file. Please use "make:migration" instead.
  session:migration  [DEPRECATED] Generates the migration file for database sessions, Please use  "make:migration --session"
                     instead.

Housekeeping
  debugbar:clear     Clears all debugbar JSON files.
  logs:clear         Clears all log files.

かなりの種類がありますね。

マイグレーションなどはこれらのコマンドでのサポートがある分、

気軽に導入できるようになったかもしれないです。

Generatorsに関してはユーザーガイドの方でも詳細に触れられています。

実際に使ってみる

いくつか実際に使ってみます。

help

php spark help [command]

任意のコマンドのオプション、引数などは上記のhelpを使うことで調べられます。

serve

> php spark serve

CodeIgniter v4.1.3 Command Line Tool - Server Time: 2021-07-24 22:40:27 UTC-05:00

CodeIgniter development server started on http://localhost:8080
Press Control-C to stop.
[Sun Jul 25 12:40:27 2021] PHP 7.4.21 Development Server (http://localhost:8080) started
[Sun Jul 25 12:40:45 2021] [::1]:52277 Accepted
[Sun Jul 25 12:40:45 2021] [::1]:52516 Accepted
[Sun Jul 25 12:40:45 2021] [::1]:52516 Closing
[Sun Jul 25 12:40:45 2021] [::1]:52277 [200]: GET /favicon.ico
[Sun Jul 25 12:40:45 2021] [::1]:52277 Closing
[Sun Jul 25 12:43:06 2021] [::1]:51848 Accepted

上記のようにserveを使うとビルトインサーバーを使えます。

PHPが実行できる環境であればWebサーバーを設定することなく、さっと確認できます。

make:command

sparkコマンドを自作できます。

# php spark make:command hoge

CodeIgniter v4.1.3 Command Line Tool - Server Time: 2021-07-26 07:38:12 UTC-05:00

File created: APPPATH/Commands/Hoge.php

下記のようなファイルが生成され、

コマンド名、コマンドラインの引数、オプション、処理内容などを記述できます。

<?php

namespace App\Commands;

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

class Hoge extends BaseCommand
{
	/**
	 * The Command's Group
	 *
	 * @var string
	 */
	protected $group = 'CodeIgniter';

	/**
	 * The Command's Name
	 *
	 * @var string
	 */
	protected $name = 'command:hoge';

	/**
	 * The Command's Description
	 *
	 * @var string
	 */
	protected $description = '';

	/**
	 * The Command's Usage
	 *
	 * @var string
	 */
	protected $usage = 'command:hoge [arguments] [options]';

	/**
	 * The Command's Arguments
	 *
	 * @var array
	 */
	protected $arguments = [];

	/**
	 * The Command's Options
	 *
	 * @var array
	 */
	protected $options = [];

	/**
	 * Actually execute a command.
	 *
	 * @param array $params
	 */
	public function run(array $params)
	{
		var_dump("hoge");
	}
}

下記の実行結果はdumpしているだけですが、使い方次第で応用が利きそうです。

ユーザーガイドでもさらなる説明を確認できます。

# php spark command:hoge

CodeIgniter v4.1.3 Command Line Tool - Server Time: 2021-07-26 07:40:48 UTC-05:00

string(4) "hoge"

make:controller

任意のコントローラを生成するコマンドです。

# php spark make:controller Test --suffix

CodeIgniter v4.1.3 Command Line Tool - Server Time: 2021-07-26 07:42:41 UTC-05:00

File created: APPPATH/Controllers/TestController.php
<?php

namespace App\Controllers;

use App\Controllers\BaseController;

class TestController extends BaseController
{
	public function index()
	{
		//
	}
}

まとめ

CLIジェネレータまわりは結構充実しているのかなと思います。

特にマイグレーションやシーダー、モデルに関しては、有効活用できると楽になりそうです。

タイトルとURLをコピーしました