combustor 、提供されたデータベース テーブルに基づいてコントローラー、モデル、ビューを生成する Codeigniter 3 のユーティリティ パッケージです。 Describe パッケージを使用してデータベース テーブルから列を取得し、コード生成の基礎として使用します。
Codeigniter 3
フレームワークの構造に基づいてコードを生成します。combustor
実行します。 まず、最新の Codeigniter 3 プロジェクトの内容を抽出します。
$ wget https://github.com/bcit-ci/CodeIgniter/archive/3.1.13.zip
$ unzip 3.1.13.zip -d ciacme
次に、プロジェクトのデータベース接続設定を構成します。
$ cd ciacme
$ nano application/config/database.php
// ciacme/application/config/database.php
// ...
$ db [ ' default ' ] = array (
' dsn ' => '' ,
' hostname ' => ' localhost ' ,
' username ' => '' ,
' password ' => '' ,
' database ' => '' ,
' dbdriver ' => ' mysqli ' ,
// ...
);
次に、Composer 経由でcombustor
のインストールに進みます。
$ composer require rougin/ combustor --dev
// ciacme/composer.json
{
// ...
"require-dev" :
{
"mikey179/vfsstream" : " 1.6.* " ,
"phpunit/phpunit" : " 4.* || 5.* || 9.* " ,
"rougin/ combustor " : " ~1.0 "
}
}
最後に、 Wildfire
やDoctrine
などの ORM ラッパーをインストールします。
$ vendor/bin/ combustor install:wildfire
$ vendor/bin/ combustor install:doctrine
注記
install:wildfire
コマンドを使用すると Wildfire パッケージがインストールされ、 install:doctrine
では Credo パッケージがインストールされます。
コード構造生成後の変更を最小限に抑えるために、コマンドを実行する前に、データベース テーブルが適切に定義されていること (外部キー、インデックス、関係、正規化) を確認してください。
また、データベース内の他のテーブルと関係のないデータベース テーブルへのモデル、ビュー、またはコントローラーの生成を最初に進めてください。
ヒント
combustor
指定されたデータベース スキーマに基づいてコントローラー、モデル、またはビューを生成します。指定されたデータベース スキーマに問題がある場合、 combustor
不正なコードベースを生成します。
create:layout
新しいヘッダーとフッター ファイルを作成します。
オプション
--bootstrap
- ブートストラップに基づいてスタイルを追加します。--force
- ファイルがすでに存在する場合でも生成します例
$ vendor/bin/ combustor create-layout --bootstrap
create:controller
新しい HTTP コントローラーを作成します。
引数
table
- データベーステーブルの名前オプション
--doctrine
- Doctrine ベースのコントローラーを生成します--wildfire
- Wildfire ベースのコントローラーを生成します--empty
- 空の HTTP コントローラーを生成します--force
- ファイルがすでに存在する場合でも生成します注記
Wildfire
またはDoctrine
がインストールされている場合、指定されたコマンドを実行するためのオプションとしてそれを指定する必要はありません (例: --wildfire
)。ただし、両方がインストールされている場合は、コマンドに--wildfire
または--doctrine
オプションを追加する必要があります。
例
$ vendor/bin/ combustor create:controller users --wildfire
create:model
新しいモデルを作成します。
引数
table
- データベーステーブルの名前オプション
--doctrine
- Doctrine ベースのモデルを生成します--wildfire
- Wildfire ベースのモデルを生成します。--empty
- 空のモデルを生成します--force
- ファイルがすでに存在する場合でも生成します例
$ vendor/bin/ combustor create:model users --wildfire
create:repository
新しいエンティティ リポジトリを作成します。
引数
table
- データベーステーブルの名前オプション
--force
- ファイルがすでに存在する場合でも生成します例
$ vendor/bin/ combustor create:repository users
注記
このコマンドは Doctrine 実装にのみ適用できます。
create:view
ビューテンプレートを作成します。
引数
table
- データベーステーブルの名前オプション
--bootstrap
- ブートストラップに基づいてスタイルを追加します。--doctrine
- Doctrine ベースのビューを生成します--wildfire
- Wildfire ベースのビューを生成します--force
- ファイルがすでに存在する場合でも生成します例
$ vendor/bin/ combustor create:view users --bootstrap
create:scaffold
新しい HTTP コントローラー、モデルを作成し、テンプレートを表示します。
引数
table
- データベーステーブルの名前オプション
--bootstrap
- ブートストラップに基づいてスタイルを追加します。--doctrine
- Doctrine ベースのコントローラー、モデル、ビューを生成します。--wildfire
- Wildfire ベースのコントローラー、モデル、ビューを生成します。--force
- ファイルがすでに存在する場合でも生成します例
$ vendor/bin/ combustor create:scaffold users --bootstrap --wildfire
注記
--doctrine
が選択されている場合、このコマンドはcreate:repository
コマンドも実行します。
install:doctrine
Doctrine パッケージをインストールします。
例
$ vendor/bin/ combustor install:doctrine
注記
Doctrine
がプロジェクトにインストールされていない場合に使用できます。core
ディレクトリにLoader.php
追加されます。上記のファイルは、 EntityRepository
に拡張されたカスタム リポジトリをロードするために使用されます。install:wildfire
Wildfire パッケージをインストールします。
例
$ vendor/bin/ combustor install:wildfire
注記
このコマンドは、 Wildfire
がプロジェクトにインストールされていない場合に使用できます。
remove:doctrine
Doctrine パッケージを削除します。
例
$ vendor/bin/ combustor remove:doctrine
注記
このコマンドは、 Doctrine
がプロジェクトにインストールされている場合に使用できます。
remove:wildfire
Wildfire パッケージを削除します。
例
$ vendor/bin/ combustor remove:wildfire
注記
このコマンドは、 Wildfire
がプロジェクトにインストールされている場合に使用できます。
combustor .yml
の使用combustor
現在、 Installation
に基づいた設定を行った後、すぐに使用できるようになります。ただし、 combustor .yml
使用すると、新しいアプリケーション パスの指定や列の除外などの複雑なセットアップに使用できます。
# combustor .yml
app_path : %%CURRENT_DIRECTORY%%/Sample
excluded_fields :
- created_at
- updated_at
- deleted_at
combustor .yml
作成するには、単にinitialize
コマンドを実行します。
$ vendor/bin/ combustor initialize
[PASS] " combustor .yml " added successfully !
app_path
このプロパティはapplication
ディレクトリを指定します。定義されたディレクトリからconfig/config.php
ファイルを検出できる限り、任意のディレクトリ (例: ciacme/application
、 ciacme/config
など) に更新できます。
# combustor .yml
app_path : %%CURRENT_DIRECTORY%%/Sample
# ...
注記
combustor
app_path
で指定されたパスが有効なCodeigniter 3
プロジェクトであるかどうかを確認しようとします。次に、 application
ディレクトリが存在するかどうか、またはapp_path
で定義されたディレクトリからconfig
ディレクトリに直接アクセスできるかどうか、別のチェックが実行されます。
excluded_fields
このプロパティで指定されたフィールドは、次のテンプレートの生成から除外されます。
controllers
models
views
(テンプレートのcreate
およびedit
のみ) # combustor .yml
# ...
excluded_fields :
- created_at
- updated_at
- deleted_at
注記
タイムスタンプは通常、 Wildfire
やDoctrine
などのインストールされた ORM によって自動的に設定されるため、 combustor .yml
初めて作成するときにデフォルトで追加されます。
custom_fields
デフォルトでは、ページをcreate
およびedit
ためにcombustor
によって生成されるすべてのフィールドは、 form_input
ヘルパーを使用します。
<div class="mb- 3 ">
<?= form_label ( ' Email ' , '' , [ ' class ' => ' form-label mb-0 ' ]) ?>
<?= form_input ( ' email ' , set_value ( ' email ' ), ' class="form-control" ' ) ?>
<?= form_error ( ' email ' , ' <div><span class="text-danger small"> ' , ' </span></div> ' ) ?>
</div>
ただし、 email
やboolean
型などの一部のフィールドでは、他のフォーム ヘルパーを使用する必要がある場合があります。
<div class="mb- 3 ">
<?= form_label ( ' Email ' , '' , [ ' class ' => ' form-label mb-0 ' ]) ?>
// Still using form_input, but the type is "email" instead
<?= form_input ([ ' type ' => ' email ' , ' name ' => ' email ' , ' value ' => set_value ( ' email ' ), ' class ' => ' form-control ' ]) ?>
<?= form_error ( ' email ' , ' <div><span class="text-danger small"> ' , ' </span></div> ' ) ?>
</div>
<div class="mb- 3 ">
<?= form_label ( ' Admin ' , '' , [ ' class ' => ' form-label mb-0 ' ]) ?>
// Use "form_checkbox" for boolean-based data types
<div>
<?= form_checkbox ( ' admin ' , true , set_value ( ' admin ' ), ' class="form-check-input" ' ) ?>
</div>
<?= form_error ( ' admin ' , ' <div><span class="text-danger small"> ' , ' </span></div> ' ) ?>
</div>
これを実現するために、 combustor
custom_fields
を使用して指定されたフィールド名またはデータ型を処理するためのユーティリティを提供します。
# combustor .yml
# ...
custom_fields :
- Rougin combustor TemplateFieldsBooleanField
カスタム フィールドを追加するときは、 Colfield
クラスを拡張するクラスを作成してください。
namespace Acme Fields ;
use Rougin combustor Colfield ;
class EmailField extends Colfield
{
protected $ class = ' form-control ' ;
/**
* If $name is specified, it will check if the current field
* name matches the in this $name field.
*/
protected $ name = ' email ' ;
public function getPlate ()
{
$ field = $ this -> accessor ;
$ class = $ this -> getClass ();
/** @var string */
$ name = $ this -> getName ();
$ html = ' <?= form_input([ ' type ' => ' email ' , ' name ' => '' . $ name . '' , ' value ' => set_value( '' . $ name . '' )]) ?> ' ;
if ( $ this -> edit )
{
$ html = str_replace ( ' set_value( '' . $ name . '' ) ' , ' set_value( '' . $ name . '' , ' . $ field . ' ) ' , $ html );
}
$ html = str_replace ( ' )]) ?> ' , ' ), ' class ' => '' . $ class . '' ]) ?> ' , $ html );
return array ( $ html );
}
}
次に、カスタム フィールドを作成した後、単純にクラス名をcombustor .yml
に追加します。
# combustor .yml
# ...
custom_fields :
- Rougin combustor TemplateFieldsBooleanField
- AcmeFieldsEmailField
最近の変更点の詳細については、CHANGELOG を参照してください。
$ composer test
MIT ライセンス (MIT)。詳細については、「ライセンス」を参照してください。