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 --bootstrapcreate:controller新しい HTTP コントローラーを作成します。
引数
table - データベーステーブルの名前オプション
--doctrine - Doctrine ベースのコントローラーを生成します--wildfire - Wildfire ベースのコントローラーを生成します--empty - 空の HTTP コントローラーを生成します--force - ファイルがすでに存在する場合でも生成します注記
WildfireまたはDoctrineがインストールされている場合、指定されたコマンドを実行するためのオプションとしてそれを指定する必要はありません (例: --wildfire )。ただし、両方がインストールされている場合は、コマンドに--wildfireまたは--doctrineオプションを追加する必要があります。
例
$ vendor/bin/ combustor create:controller users --wildfirecreate:model新しいモデルを作成します。
引数
table - データベーステーブルの名前オプション
--doctrine - Doctrine ベースのモデルを生成します--wildfire - Wildfire ベースのモデルを生成します。--empty - 空のモデルを生成します--force - ファイルがすでに存在する場合でも生成します例
$ vendor/bin/ combustor create:model users --wildfirecreate: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 --bootstrapcreate:scaffold新しい HTTP コントローラー、モデルを作成し、テンプレートを表示します。
引数
table - データベーステーブルの名前オプション
--bootstrap - ブートストラップに基づいてスタイルを追加します。--doctrine - Doctrine ベースのコントローラー、モデル、ビューを生成します。--wildfire - Wildfire ベースのコントローラー、モデル、ビューを生成します。--force - ファイルがすでに存在する場合でも生成します例
$ vendor/bin/ combustor create:scaffold users --bootstrap --wildfire注記
--doctrineが選択されている場合、このコマンドはcreate:repositoryコマンドも実行します。
install:doctrineDoctrine パッケージをインストールします。
例
$ vendor/bin/ combustor install:doctrine注記
Doctrineがプロジェクトにインストールされていない場合に使用できます。coreディレクトリにLoader.php追加されます。上記のファイルは、 EntityRepositoryに拡張されたカスタム リポジトリをロードするために使用されます。install:wildfireWildfire パッケージをインストールします。
例
$ vendor/bin/ combustor install:wildfire注記
このコマンドは、 Wildfireがプロジェクトにインストールされていない場合に使用できます。
remove:doctrineDoctrine パッケージを削除します。
例
$ vendor/bin/ combustor remove:doctrine注記
このコマンドは、 Doctrineがプロジェクトにインストールされている場合に使用できます。
remove:wildfireWildfire パッケージを削除します。
例
$ 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このプロパティで指定されたフィールドは、次のテンプレートの生成から除外されます。
controllersmodelsviews (テンプレートの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)。詳細については、「ライセンス」を参照してください。