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ジェネレータまわりは結構充実しているのかなと思います。
特にマイグレーションやシーダー、モデルに関しては、有効活用できると楽になりそうです。