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
:コントローラークラスの名前。[必須]
オプション:
--bare
:BaseController
の代わりにCodeIgniter\Controller
から拡張します。--restful
:RESTfulリソースから拡張します。選択肢はcontroller
とpresenter
です。デフォルトはcontroller
です。--namespace
:ルート名前空間を設定します。デフォルトはAPP_NAMESPACE
の値です。--suffix
:生成されたクラス名にコンポーネントサフィックスを追加します。--force
:このフラグを設定すると、宛先の既存のファイルが上書きされます。
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
: 返り値の型をarray
、object
、または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
次のファイルが作成されます
app/Controllers/User.php
app/Models/User.php
app/Database/Migrations/<日付>_User.php および
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',
];
}