CLI 產生器¶
CodeIgniter4 現在內建了產生器,以方便建立控制器、模型、實體等樣板檔案。你也可以只用一個指令就能搭建出一套完整的檔案。
簡介¶
當使用 php spark list 列出指令時,所有內建的產生器都位於 Generators 的命名空間中。要查看某個特定生成器的完整描述和使用資訊,請使用以下指令。
> php spark help <generator_command>
你得把 <generator_command> 替換成要檢查的指令。
內建產生器¶
CodeIgniter4 預設提供了下列產生器。
make:command¶
建立一個新的 spark 指令。
使用方式:¶
make:command <name> [選項]
參數:¶
name: 指令類別的類別名稱 [必須]
選項:¶
--command: 在 Spark 中執行的指令名稱,預設為:command:name。--group: 指令的群組/命名空間。基本指令預設為CodeIgniter,產生器指令預設為Generators。--type: 指令的類型,是basic指令還是generator指令,預設為basic。--namespace: 依照根命名空間,預設為APP_NAMESPACE。--suffix: 在產生的類別名稱上加上元件的後綴。--force: 使用這個選項將可以強制覆蓋現有檔案。
make:config¶
建立一個新的設定檔案。
使用方式:¶
make:config <name> [選項]
參數:¶
name: 設定類別的類別名稱 [必須]
選項:¶
--namespace: 依照根命名空間,預設為APP_NAMESPACE。--suffix: 在產生的類別名稱上加上元件的後綴。--force: 使用這個選項將可以強制覆蓋現有檔案。
make:controller¶
建立新的控制器檔案。
使用方式:¶
make:controller <name> [選項]
參數:¶
name: 控制器的類別名稱 [必須]
選項:¶
--bare: 繼承CodeIgniter\Controller而不是BaseController。--restful: 繼承 RESTful 資源。可選選項為controller與presenter。預設為controller。--namespace: 依照根命名空間,預設為APP_NAMESPACE。--suffix: 在產生的類別名稱上加上元件的後綴。--force: 使用這個選項將可以強制覆蓋現有檔案。
make:entity¶
建立一個新的實體檔案。
使用方式:¶
make:entity <name> [選項]
參數:¶
name: 實體類別的名稱。 [必須]
選項:¶
--namespace: 依照根命名空間,預設為APP_NAMESPACE。--suffix: 在產生的類別名稱上加上元件的後綴。--force: 使用這個選項將可以強制覆蓋現有檔案。
make:filter¶
建立一個過濾器檔案。
使用方式:¶
make:filter <name> [選項]
參數:¶
name: 過濾器類別名稱。 [必須]
選項:¶
--namespace: 依照根命名空間,預設為APP_NAMESPACE。--suffix: 在產生的類別名稱上加上元件的後綴。--force: 使用這個選項將可以強制覆蓋現有檔案。
make:model¶
新建新的模型檔案。
使用方式:¶
make:model <name> [選項]
參數:¶
name: 模型的類別名稱。 [必須]
選項:¶
--dbgroup: 欲使用的資料庫群組。預設為default。--return: 從array、object,以及entity設定回傳類型。預設為array。--table: 提供資料表名稱。預設為類別名稱的複數。--namespace: 依照根命名空間,預設為APP_NAMESPACE。--suffix: 在產生的類別名稱上加上元件的後綴。--force: 使用這個選項將可以強制覆蓋現有檔案。
make:seeder¶
建立一個新的資料填充檔案。
使用方式:¶
make:seeder <name> [選項]
參數:¶
name: 資料填充的類別名稱。 [必須]
選項:¶
--namespace: 依照根命名空間,預設為APP_NAMESPACE。--suffix: 在產生的類別名稱上加上元件的後綴。--force: 使用這個選項將可以強制覆蓋現有檔案。
make:migration¶
建立一個新的遷移檔案。
使用方式:¶
make:migration <name> [選項]
參數:¶
name: 遷移檔案的類別名稱。 [必須]
選項:¶
--session: 替資料庫工作階段產生遷移檔案。--table: 替資料庫工作階段的資料表設定名稱,預設為ci_sessions。--dbgroup: 為資料庫工作階段設定資料庫群組。預設為default群組。--namespace: 依照根命名空間,預設為APP_NAMESPACE。--suffix: 在產生的類別名稱上加上元件的後綴。--force: 使用這個選項將可以強制覆蓋現有檔案。
make:validation¶
建立一個新的驗證檔案。
使用方式:¶
make:validation <name> [選項]
參數:¶
name: 驗證檔案的類別名稱。 [必須]
選項:¶
--namespace: 依照根命名空間,預設為APP_NAMESPACE。--suffix: 在產生的類別名稱上加上元件的後綴。--force: 使用這個選項將可以強制覆蓋現有檔案。
備註
你需要將產生器產出的程式碼放在子資料夾中嗎?打個比方,如果你想要建立一個控制器類別,並把它放在主資料夾 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 的自動載入檔案中定義的有效命名空間。否則,程式碼的產生將被中斷。
警告
使用 migrate:create 來建立遷移檔案的方法即將被棄用,它將在未來的版本移除。 請使用 make:migration --session 代替它。另外,請使用 make:migration --session 來代替被棄用的 session:migration 。
一套完整的庫存程式碼鷹架¶
在我們的開發階段中,有時是依照組別來建立功能的,比如說:建立一個 Admin 組別。這個組別將會包含它所需要的控制器、模型、遷移檔案,甚至是實體。你可能會因為上述需求而在命令列逐一輸入每個產生器指令,並祈求如果有一個生成器指令來統一指揮它們就好了。
免煩惱! CodeIgniter4 為此提供了 make:scaffold 指令,它把控制器、模型、實體、遷移,和資料填充器等產生器指令統一封裝在一塊兒。你只需要提供類別名稱,它會以此命名所有自動產生的類別。另外,每種產生器指令所支援的 獨有選項 都能夠被 scaffold 指令自動識別。
在你的終端機執行以下指令:
php spark make:scaffold user
它將建立這些類別:
App\Controllers\User;App\Models\User;App\Database\Migrations\<some date here>_User; andApp\Database\Seeds\User.
若你打算在鷹架檔案中同時產生一個 Entity 類別時,你需在指令中提到 --return entity ,此時,它將被傳遞給模型產生器。