CLIジェネレーター

CodeIgniter4には、ストックコントローラー、モデル、エンティティなどの作成を容易にするジェネレーターが装備されています。また、1つのコマンドだけでファイルの完全なセットをスキャフォールディングすることもできます。

はじめに

すべての組み込みジェネレーターは、php spark listを使用してリストした場合、Generatorsグループの下にあります。特定のジェネレーターの完全な説明と使用法情報を表示するには、次のコマンドを使用します。

php spark help <generator_command>

<generator_command>は、確認するコマンドに置き換えられます。

生成されたコードをサブフォルダーに入れる必要がありますか?たとえば、メインのControllersフォルダーのAdminサブフォルダーにコントローラークラスを作成したい場合は、次のようにサブフォルダーをクラス名の先頭に追加するだけです:php spark make:controller admin/login。このコマンドは、Controllers/AdminサブフォルダーにLoginコントローラーを作成し、名前空間をApp\Controllers\Adminにします。

モジュールで作業していますか?コード生成では、ルート名前空間がデフォルトでAPP_NAMESPACEに設定されます。生成されたコードをモジュール名前空間の別の場所に配置する必要がある場合は、コマンドで--namespaceオプションを設定してください。例:php spark make:model blog --namespace Acme\\Blog

警告

--namespaceオプションを設定するときは、指定した名前空間が、Config\Autoload$psr4配列で定義されているか、composerのオートロードファイルで定義されている有効な名前空間であることを確認してください。そうしないと、コード生成が中断されます。

重要

v4.0.5以降、マイグレーションファイルを作成するためのmigrate:createの使用は非推奨になりました。これは将来のリリースで削除されます。make:migrationを代替として使用してください。また、非推奨のsession:migrationの代わりに、make:migration --sessionを使用してください。

組み込みジェネレーター

CodeIgniter4には、デフォルトで次のジェネレーターが付属しています。

make:cell

バージョン 4.3.0 で新しく追加されました。

新しいCellファイルとそのビューを作成します。

使用法:

make:cell <name> [options]

引数:

  • name:セルクラスの名前。PascalCaseで記述する必要があります。[必須]

オプション:

  • --namespace:ルート名前空間を設定します。デフォルトはAPP_NAMESPACEの値です。

  • --force:このフラグを設定すると、宛先の既存のファイルが上書きされます。

make:command

新しいsparkコマンドを作成します。

使用法:

make:command <name> [options]

引数:

  • name:コマンドクラスの名前。[必須]

オプション:

  • --command:sparkで実行するコマンド名。デフォルトはcommand:nameです。

  • --group:コマンドのグループ/名前空間。デフォルトは、基本コマンドの場合はApp、ジェネレーターコマンドの場合はGeneratorsです。

  • --type:コマンドのタイプ。basicコマンドかgeneratorコマンドか。デフォルトはbasicです。

  • --namespace:ルート名前空間を設定します。デフォルトはAPP_NAMESPACEの値です。

  • --suffix:生成されたクラス名にコンポーネントサフィックスを追加します。

  • --force:このフラグを設定すると、宛先の既存のファイルが上書きされます。

make:config

新しい設定ファイルを作成します。

使用法:

make:config <name> [options]

引数:

  • name:設定クラスの名前。[必須]

オプション:

  • --namespace:ルート名前空間を設定します。デフォルトはAPP_NAMESPACEの値です。

  • --suffix:生成されたクラス名にコンポーネントサフィックスを追加します。

  • --force:このフラグを設定すると、宛先の既存のファイルが上書きされます。

make:controller

新しいコントローラーファイルを作成します。

使用法:

make:controller <name> [options]

引数:

  • name:コントローラークラスの名前。[必須]

オプション:

  • --bareBaseControllerの代わりにCodeIgniter\Controllerから拡張します。

  • --restful:RESTfulリソースから拡張します。選択肢はcontrollerpresenterです。デフォルトはcontrollerです。

  • --namespace:ルート名前空間を設定します。デフォルトはAPP_NAMESPACEの値です。

  • --suffix:生成されたクラス名にコンポーネントサフィックスを追加します。

  • --force:このフラグを設定すると、宛先の既存のファイルが上書きされます。

--suffixを使用すると、生成されるコントローラー名はProductControllerのようになります。これは、自動ルーティングを使用する場合のコントローラーの命名規則に違反します(コントローラークラス名は、大文字で始まり、最初の一文字のみが大文字である必要があります)。したがって、定義済みルートを使用する場合に--suffixを使用できます。

make:entity

新しいエンティティファイルを作成します。

使用法:

make:entity <name> [options]

引数:

  • name:エンティティクラスの名前。[必須]

オプション:

  • --namespace:ルート名前空間を設定します。デフォルトはAPP_NAMESPACEの値です。

  • --suffix:生成されたクラス名にコンポーネントサフィックスを追加します。

  • --force:このフラグを設定すると、宛先の既存のファイルが上書きされます。

make:filter

新しいフィルターファイルを作成します。

使用法:

make:filter <name> [options]

引数:

  • name: フィルタークラスの名前。[必須]

オプション:

  • --namespace:ルート名前空間を設定します。デフォルトはAPP_NAMESPACEの値です。

  • --suffix:生成されたクラス名にコンポーネントサフィックスを追加します。

  • --force:このフラグを設定すると、宛先の既存のファイルが上書きされます。

make:model

新しいモデルファイルを作成します。

使用法:

make:model <name> [options]

引数:

  • name: モデルクラスの名前。[必須]

オプション:

  • --dbgroup: 使用するデータベースグループ。デフォルトは default です。

  • --return: 返り値の型を arrayobject、または entity から設定します。デフォルトは array です。

  • --table: 別のテーブル名を指定します。デフォルトはクラス名の複数形です。

  • --namespace:ルート名前空間を設定します。デフォルトはAPP_NAMESPACEの値です。

  • --suffix:生成されたクラス名にコンポーネントサフィックスを追加します。

  • --force:このフラグを設定すると、宛先の既存のファイルが上書きされます。

make:seeder

新しいシーダーファイルを作成します。

使用法:

make:seeder <name> [options]

引数:

  • name: シーダークラスの名前。[必須]

オプション:

  • --namespace:ルート名前空間を設定します。デフォルトはAPP_NAMESPACEの値です。

  • --suffix:生成されたクラス名にコンポーネントサフィックスを追加します。

  • --force:このフラグを設定すると、宛先の既存のファイルが上書きされます。

make:migration

新しいマイグレーションファイルを作成します。

使用法:

make:migration <name> [options]

引数:

  • name: マイグレーションクラスの名前。[必須]

オプション:

  • --session: データベースセッション用のマイグレーションファイルを生成します。

  • --table: データベースセッションに使用するテーブル名を設定します。デフォルトは ci_sessions です。

  • --dbgroup: データベースセッションのデータベースグループを設定します。デフォルトは default グループです。

  • --namespace:ルート名前空間を設定します。デフォルトはAPP_NAMESPACEの値です。

  • --suffix:生成されたクラス名にコンポーネントサフィックスを追加します。

  • --force:このフラグを設定すると、宛先の既存のファイルが上書きされます。

make:validation

新しいバリデーションファイルを作成します。

使用法:

make:validation <name> [options]

引数:

  • name: バリデーションクラスの名前。[必須]

オプション:

  • --namespace:ルート名前空間を設定します。デフォルトはAPP_NAMESPACEの値です。

  • --suffix:生成されたクラス名にコンポーネントサフィックスを追加します。

  • --force:このフラグを設定すると、宛先の既存のファイルが上書きされます。

一連のストックコードの足場

開発フェーズでは、Admin グループを作成するなど、グループごとに機能を作成することがあります。このグループには、独自のコントローラー、モデル、マイグレーションファイル、さらにはエンティティが含まれます。ターミナルで各ジェネレーターコマンドを1つずつ入力し、それらをすべて制御する単一のジェネレーターコマンドがあれば素晴らしいのに、と願うかもしれません。

もう心配はいりません! CodeIgniter4 には、コントローラー、モデル、エンティティ、マイグレーション、およびシーダーのジェネレーターコマンドのラッパーである make:scaffold コマンドも付属しています。必要なのは、生成されるすべてのクラスの名前として使用されるクラス名だけです。また、各ジェネレーターコマンドでサポートされる個別のオプションは、スカフォールドコマンドによって認識されます。

ターミナルでこれを実行すると

php spark make:scaffold user

次のファイルが作成されます

  1. app/Controllers/User.php

  2. app/Models/User.php

  3. app/Database/Migrations/<日付>_User.php および

  4. app/Database/Seeds/User.php

スカフォールドされたファイルに Entity クラスを含めるには、コマンドに --return entity を含めるだけで、それがモデルジェネレーターに渡されます。

GeneratorTrait

すべてのジェネレーターコマンドは、コード生成で使用されるメソッドを完全に活用するために GeneratorTrait を使用する必要があります。

カスタムジェネレーターコマンドテンプレートの場所の宣言

ジェネレーターテンプレートのデフォルトの検索順序は、(1) app/Config/Generators.php ファイルで定義されたテンプレート、(2) 見つからない場合は、CodeIgniter\Commands\Generators\Views 名前空間にあるテンプレートです。

カスタムジェネレーターコマンドのテンプレートの場所を宣言するには、それを app/Config/Generators.php ファイルに追加する必要があります。たとえば、make:awesome-command というコマンドがあり、ジェネレーターテンプレートが app ディレクトリ内の app/Commands/Generators/Views/awesomecommand.tpl.php にある場合、次のように構成ファイルを更新します。

<?php

namespace Config;

use CodeIgniter\Config\BaseConfig;

class Generators extends BaseConfig
{
    public array $views = [
        // ..
        'make:awesome-command' => 'App\Commands\Generators\Views\awesomecommand.tpl.php',
    ];
}