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 ' ,
// ...
);
ต่อไปคือดำเนินการติดตั้ง combustor
ผ่าน Composer:
$ composer require rougin/ combustor --dev
// ciacme/composer.json
{
// ...
"require-dev" :
{
"mikey179/vfsstream" : " 1.6.* " ,
"phpunit/phpunit" : " 4.* || 5.* || 9.* " ,
"rougin/ combustor " : " ~1.0 "
}
}
สุดท้าย ติดตั้งตัวห่อ ORM เช่น Wildfire
หรือ Doctrine
:
$ vendor/bin/ combustor install:wildfire
$ vendor/bin/ combustor install:doctrine
บันทึก
การใช้คำสั่ง install:wildfire
จะติดตั้งแพ็คเกจ Wildfire ในขณะที่ install:doctrine
จะติดตั้งแพ็คเกจ Credo
ก่อนที่จะดำเนินการคำสั่งใดๆ โปรดตรวจสอบให้แน่ใจว่า ตารางฐานข้อมูลถูกกำหนดอย่างถูกต้อง (คีย์ต่างประเทศ ดัชนี ความสัมพันธ์ การทำให้เป็นมาตรฐาน) เพื่อลดการแก้ไขให้เหลือน้อยที่สุดหลังจากสร้างโครงสร้างโค้ดแล้ว
นอกจากนี้ โปรดดำเนินการสร้างแบบจำลอง มุมมอง หรือตัวควบคุมให้กับตารางฐานข้อมูลที่ ไม่มีความสัมพันธ์กับตารางอื่นๆ ในฐานข้อมูลก่อน
เคล็ดลับ
combustor
จะสร้างคอนโทรลเลอร์ โมเดล หรือมุมมองตามสคีมาฐานข้อมูลที่ระบุ หากมีสิ่งผิดปกติในสคีมาฐานข้อมูลที่ระบุ combustor
จะสร้างโค้ดเบสที่ไม่ถูกต้อง
create:layout
สร้างไฟล์ส่วนหัวและส่วนท้ายใหม่
ตัวเลือก
--bootstrap
- เพิ่มสไตล์ตาม Bootstrap--force
- สร้างไฟล์แม้ว่าจะมีอยู่แล้วก็ตามตัวอย่าง
$ vendor/bin/ combustor create-layout --bootstrap
create:controller
สร้างตัวควบคุม HTTP ใหม่
ข้อโต้แย้ง
table
- ชื่อของตารางฐานข้อมูลตัวเลือก
--doctrine
- สร้างตัวควบคุมที่ใช้หลักคำสอน--wildfire
- สร้างตัวควบคุมที่ใช้ Wildfire--empty
- สร้างตัวควบคุม HTTP ที่ว่างเปล่า--force
- สร้างไฟล์แม้ว่าจะมีอยู่แล้วก็ตาม บันทึก
หากมีการติดตั้ง Wildfire
หรือ Doctrine
ไว้ ไม่จำเป็นต้องระบุเป็นตัวเลือกสำหรับการรันคำสั่งที่ระบุ (เช่น --wildfire
) อย่างไรก็ตาม หากติดตั้งทั้งสองอย่างแล้ว คำสั่งจะต้องมีตัวเลือก --wildfire
หรือ --doctrine
เพิ่ม
ตัวอย่าง
$ vendor/bin/ combustor create:controller users --wildfire
create:model
สร้างโมเดลใหม่
ข้อโต้แย้ง
table
- ชื่อของตารางฐานข้อมูลตัวเลือก
--doctrine
- สร้างแบบจำลองตามหลักคำสอน--wildfire
- สร้างโมเดลที่ใช้ Wildfire--empty
- สร้างโมเดลว่าง--force
- สร้างไฟล์แม้ว่าจะมีอยู่แล้วก็ตามตัวอย่าง
$ vendor/bin/ combustor create:model users --wildfire
create:repository
สร้างที่เก็บเอนทิตีใหม่
ข้อโต้แย้ง
table
- ชื่อของตารางฐานข้อมูลตัวเลือก
--force
- สร้างไฟล์แม้ว่าจะมีอยู่แล้วก็ตามตัวอย่าง
$ vendor/bin/ combustor create:repository users
บันทึก
คำสั่งนี้ใช้ได้กับการนำหลักคำสอนไปใช้เท่านั้น
create:view
สร้างเทมเพลตมุมมอง
ข้อโต้แย้ง
table
- ชื่อของตารางฐานข้อมูลตัวเลือก
--bootstrap
- เพิ่มสไตล์ตาม Bootstrap--doctrine
- สร้างมุมมองตามหลักคำสอน--wildfire
- สร้างมุมมองตามไฟป่า--force
- สร้างไฟล์แม้ว่าจะมีอยู่แล้วก็ตามตัวอย่าง
$ vendor/bin/ combustor create:view users --bootstrap
create:scaffold
สร้างตัวควบคุม HTTP โมเดล และเทมเพลตมุมมองใหม่
ข้อโต้แย้ง
table
- ชื่อของตารางฐานข้อมูลตัวเลือก
--bootstrap
- เพิ่มสไตล์ตาม Bootstrap--doctrine
- สร้างตัวควบคุม โมเดล และมุมมองตามหลักคำสอน--wildfire
- สร้างตัวควบคุม โมเดล และมุมมองที่ใช้ Wildfire--force
- สร้างไฟล์แม้ว่าจะมีอยู่แล้วก็ตามตัวอย่าง
$ vendor/bin/ combustor create:scaffold users --bootstrap --wildfire
บันทึก
หากเลือก --doctrine
คำสั่งจะดำเนินการคำสั่ง create:repository
ด้วย
install:doctrine
ติดตั้งแพ็คเกจ Doctrine
ตัวอย่าง
$ vendor/bin/ combustor install:doctrine
บันทึก
Doctrine
ในโปรเจ็กต์Loader.php
ในไดเร็กทอรี core
ไฟล์ดังกล่าวใช้สำหรับการโหลดที่เก็บแบบกำหนดเองที่ขยายไปยัง EntityRepository
install:wildfire
ติดตั้งแพ็คเกจ Wildfire
ตัวอย่าง
$ vendor/bin/ combustor install:wildfire
บันทึก
คำสั่งนี้จะใช้งานได้หากไม่ได้ติดตั้ง Wildfire
ในโปรเจ็กต์
remove: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
อาจอัปเดตเป็นไดเร็กทอรีใดก็ได้ (เช่น ciacme/application
, ciacme/config
เป็นต้น) ตราบใดที่ตรวจพบไฟล์ config/config.php
จากไดเร็กทอรีที่กำหนด:
# combustor .yml
app_path : %%CURRENT_DIRECTORY%%/Sample
# ...
บันทึก
combustor
จะพยายามตรวจสอบเส้นทางที่ระบุใน app_path
หากเป็นโครงการ Codeigniter 3
ที่ถูกต้อง จากนั้นจะดำเนินการตรวจสอบอีกครั้งว่ามีไดเร็กทอรี application
อยู่หรือสามารถเข้าถึงไดเร็กทอรี config
ได้โดยตรงจากไดเร็กทอรีที่กำหนดไว้ใน app_path
excluded_fields
ฟิลด์ที่ระบุในคุณสมบัตินี้จะไม่รวมอยู่ในการสร้างเทมเพลตต่อไปนี้:
controllers
models
views
(สำหรับ create
และ edit
เทมเพลตเท่านั้น) # combustor .yml
# ...
excluded_fields :
- created_at
- updated_at
- deleted_at
บันทึก
การประทับเวลาจะถูกเพิ่มตามค่าเริ่มต้นเมื่อสร้าง combustor .yml
เป็นครั้งแรก เนื่องจากโดยปกติแล้วจะมีการเติมข้อมูลโดยอัตโนมัติโดย ORM ที่ติดตั้ง เช่น Wildfire
หรือ Doctrine
custom_fields
ตามค่าเริ่มต้น ฟิลด์ทั้งหมดที่สร้างโดย combustor
เพื่อ create
และ edit
เพจจะใช้ตัวช่วย 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) โปรดดูใบอนุญาตสำหรับข้อมูลเพิ่มเติม