monken / cli-create
Cli-Create基于CodeIgniter4。它可以帮助您在用CodeIgniter4开发项目时更快速地生成模板文件。
Requires
- php: ^7.2
README
Cli-Create基于CodeIgniter4。它可以帮助您在用CodeIgniter4开发项目时更快速地生成模板文件。
安装
先决条件
- CodeIgniter框架4.*
- Composer
Composer安装
composer require monken/cli-create
使用库
在Mac/Linux中打开终端或转到Windows的“运行”>“cmd”,并导航到CodeIgniter4项目的根目录
php spark list
现在,如果您看到以下消息,表示安装成功。
CodeIgniter CLI Tool - Version 4.0.2 - Server-Time: 2020-03-09 12:04:21pm
Cli-Create
create:controller Create a new controller file.
create:model Create a new model file.
指南
create:controller
创建一个新的控制器文件。
-
使用
$ php spark create:controller [controller_name] [Options]
-
描述
Create a new controller file.
-
参数
- controller_name : 控制器名称。
-
选项
-nobase Do not extends BaseControllers Class. -usemodel Choose models. -space Create folders and files according to the path you typed.
创建普通控制器
您可以使用
$ php spark create:contorller [controller_name]
现在,在"app/Controllers"中,您可以看到新的控制器文件如下
<?php namespace App\Controllers; class User extends BaseController { public function index() { echo 'Hello World!'; } }
使用"-nobase"选项
默认情况下,创建控制器文件将继承BaseController类。如果您不想使用默认设置,可以使用
$ php spark create:controller [controller_name] -nobase
"-nobase"选项可以声明在其它选项之后。
现在,在"app/Controllers"中,您可以看到新的控制器文件如下
<?php namespace App\Controllers; use CodeIgniter\Controller; class User extends Controller { public function index() { echo 'Hello World!'; } }
使用"-usemodel"选项
当创建控制器文件时,如果您需要直接选择将要使用的模型,可以使用此选项。
$ php spark create:controller [controller_name] -usemodel
"-usemodel"选项可以声明在其它选项之后。
现在,在"app/Controllers"中,您可以看到新的控制器文件如下
<?php namespace App\Controllers; use App\Models\Api\InfoModel; use App\Models\UserModel; class Member extends BaseController { public function index() { echo 'Hello World!'; } }
自定义命名空间
当创建控制器文件时,如果您需要自定义命名空间,可以使用以下选项
$ php spark create:controller [controller_name] -space
"-space"选项可以声明在其它选项之后。
在Codeigniter中,命名空间通常映射到实际的文件存储路径,因此使用此命令将根据您输入的值自动创建文件夹。
现在,在“app/Controllers/System/Admin”中,您可以看到新的"-nobase"控制器文件如下
<?php namespace App\Controllers\System\Admin; use CodeIgniter\Controller; class Login extends Controller { public function index() { echo 'Hello World!'; } }
create:controller -rest
与传统的控制器不同,Codeigniter提供了一种快速构建RESTful API的方法。当然,CLI-Create库可以帮助您快速创建这些文件,并为您自动生成所需的设置。
-
使用
$ php spark create:controller [controller_name] -rest [Options]
-
描述
Create a new RESTful controller file.
-
参数
- controller_name : 控制器名称。
-
选项
-d The names of controller and router are different. -o Select options to create the function what you want. -w Generate update and delete methods that work with HTML forms -space Create folders and files according to the path you typed.
创建普通RESTful控制器
当您不需要任何设置时,可以直接执行以下命令
php spark create:controller [controller_name] -rest
现在,在“app/Controllers”中,您可以看到新的RESTful控制器文件如下
<?php namespace App\Controllers; use CodeIgniter\RESTful\ResourceController; class User extends ResourceController { protected $modelName = 'App\Models\User'; protected $format = 'json'; public function index(){ return $this->respond([ "status" => true, "msg" => "index method successful." ]); } /*****/
然后,转到"app / Config / Routes.php",您将看到该控制器的路由设置已注册在您的配置文件中
/** * -------------------------------------------------------------------- * Route Definitions * -------------------------------------------------------------------- */ // We get a performance increase by specifying the default // route since we don't have to scan directories. $routes->get('/', 'Home::index'); //CliCreate-add-in-2020-04-10 05:42:27 $routes->resource('user',[ 'controller' =>'\App\Controllers\User', ]);
请注意,自动写入配置文件的功能是通过文件中的注释找到相对位置的。请勿更改官方配置文件中的注释,以免写入错误位置并导致程序错误。
创建具有不同路由名称和控制名称的RESTful API
您可能会经常使用此选项。有时,我们的路由器可能不会与控制器存储的位置相关联,因此此选项非常适合使用。
php spark create:controller [controller_name] -rest -d -space
"-d"选项允许您自定义路由,而"-space"允许您自定义控制器的命名空间。我们相信这些要求需要使用这两个选项来满足,因此请使用此示例进行演示。
"-d"选项可以声明在其它选项之后。
现在,在“app/Controllers/System/Api”中,您可以看到新的RESTful控制器文件如下
<?php namespace App\Controllers\System\Api; use CodeIgniter\RESTful\ResourceController; class User extends ResourceController { protected $modelName = 'App\Models\User'; protected $format = 'json'; public function index(){ return $this->respond([ "status" => true, "msg" => "index method successful." ]); } /*********/
然后,转到"app / Config / Routes.php",您将看到该控制器的路由设置已注册在您的配置文件中
/** * -------------------------------------------------------------------- * Route Definitions * -------------------------------------------------------------------- */ // We get a performance increase by specifying the default // route since we don't have to scan directories. $routes->get('/', 'Home::index'); //CliCreate-add-in-2020-04-10 05:49:09 $routes->resource('api/user',[ 'controller' =>'\App\Controllers\System\Api\User', ]);
创建"WebSafe" RESTful API
CodeIgniter 允许你在设置路由时添加“Web安全”属性,以便生成与HTML表单协同工作的更新和删除方法。
php spark create:controller [controller_name] -rest -w
“-w”选项可以在其他选项之后声明。
然后,转到 "app / Config / Routes.php",你将看到路由器设置中出现了 websafe 属性。
//CliCreate-add-in-2020-04-10 05:54:38 $routes->resource('user',[ 'controller' =>'\App\Controllers\User', 'websafe' => 1, ]);
创建RESTful API并限制路由
你可以通过选项限制生成的路由。只有与这些方法之一匹配的路由将被创建。其余的将被忽略。
php spark create:controller [controller_name] -rest -o
“-o”选项可以在其他选项之后声明。
现在,在“app/Controllers/System/Api”中,您可以看到新的RESTful控制器文件如下
然后,转到 "app / Config / Routes.php",你将看到允许创建的路由记录在路由器设置中。
/** * -------------------------------------------------------------------- * Route Definitions * -------------------------------------------------------------------- */ // We get a performance increase by specifying the default // route since we don't have to scan directories. $routes->get('/', 'Home::index'); //CliCreate-add-in-2020-04-10 05:59:28 $routes->resource('user',[ 'controller' =>'\App\Controllers\User', 'only' => ['index','show','create','update','delete'], ]);
创建控制器 - 模型
为与新的控制器一起使用创建新的模型。
-
使用
- 使用 "create:模型" 指令提供的选项。
$ php spark create:controller [controller_name] [controller_options] -model [model_name]
- 使用 "Create: 模型" 命令提供的选项未被使用。
$ php spark create:controller [controller_name] [controller_options] -model=[model_options] [model_name] [entity_name]
-
描述
Create new controller and model.
-
参数
- controller_name : 控制器名称
- controller_options : 控制器提供的选项。
- model_options : "create:model" 提供的选项。如果您想使用多个选项,请注意,它们必须用逗号分隔,去掉 "-",并在 "=" 后面立即出现。
- model_name : 模型名称。
- entity_name : 实体名称。如果您使用实体选项,可以输入此参数。
创建新的控制器和模型
Cli-Create 提供了一种同时创建控制器和模型的方法。您可以使用单个 "spark" 命令完成此操作。
php spark create:controller [controller_name] -model [model_name]
现在,打开 app / Controllers / Blog.php,你应该会看到新的控制器文件,并且正确的模型命名空间已经写入。
<?php namespace App\Controllers; use App\Models\BlogModel; class Blog extends BaseController { public function index() { echo 'Hello World!'; } }
然后,打开 app / Models / BlogModel.php,你应该会看到此控制器所需的模型已经同时创建。
<?php namespace App\Models; use CodeIgniter\Model; class BlogModel extends Model { protected $table = ''; protected $primaryKey = 'id'; protected $returnType = 'array'; protected $useSoftDeletes = true; protected $allowedFields = ['Field1', 'Field2']; /*********/
当然,您也可以在使用此命令时使用 "create:控制器" 提供的所有选项,如下所示
php spark create:controller [controller_name] -space -nobase [model_name]
现在,打开 app / Controllers / Notice.php,你应该会看到新的 "-nobase" 控制器文件。
<?php namespace App\Controllers; use CodeIgniter\Controller; use App\Models\NoticeModel; class Notice extends Controller { public function index() { echo 'Hello World!'; } }
然后,打开 app / Models / NoticeModel.php,你应该会看到此控制器所需的模型已经同时创建。
<?php namespace App\Models; use CodeIgniter\Model; class NoticeModel extends Model { protected $table = ''; protected $primaryKey = 'id'; protected $returnType = 'array'; protected $useSoftDeletes = true; protected $allowedFields = ['Field1', 'Field2']; /*********/
使用模型选项
"create:模型" 命令提供了多种不同的模型供您自由选择。当然,您可以在创建模型和控制器时指定一些您想要的选项。
php spark create:controller [controller_name] -model=basic [model_name]
您使用的选项必须紧跟在 "=" 之后。您可以参考在 "create:model" 中提到的所有选项。
现在,打开 app / Controllers / Blog.php,你应该会看到新的控制器文件,并且所需的模型已经声明。
<?php namespace App\Controllers; use App\Models\BlogModel; class Blog extends BaseController { public function index() { echo 'Hello World!'; } }
然后,打开 app / Models / BlogModel.php,你应该会看到此控制器所需的 "-basic" 模型已经同时创建。
<?php namespace App\Models; use CodeIgniter\Model; class BlogModel extends Model { protected $DBGroup = 'default'; }
使用多个模型选项
如果您需要同时使用多个模型选项,只需用逗号分隔它们即可,如下所示
php spark create:controller -space [controller_name] -model=basic,space [model_name]
此示例更复杂。创建新的控制器、新的模型和实体,并自定义控制器命名空间。
创建RESTful控制器和模型
您还可以在 "create:控制器 -rest" 中同时创建模型。
php spark create:controller -rest [controller_name] -model [model_name]
此示例更复杂。创建新的RESTful控制器、新的模型和实体,并自定义控制器命名空间。
<?php namespace App\Controllers\System\Api; use CodeIgniter\RESTful\ResourceController; class User extends ResourceController { protected $modelName = 'App\Models\UserModel; '; protected $format = 'json'; public function index(){ return $this->respond([ "status" => true, "msg" => "index method successful." ]); } /********/
create:model
创建新的模型文件。
-
使用
$ php spark create:model [model_name] [entity_name] [Options]
-
描述
Create a new model file.
-
参数
- model_name : 模型名称
- entity_name : 实体名称。如果您选择了 -entity 选项,可以输入此参数。
-
选项
-basic Creates a basic model file. -entity Uses Entity Classes. -manual Creates a Manual Model. -space Creates folders and files according to the path you typed.
创建普通模型
模型类有一些配置选项可以设置,以允许类的方法无缝为您工作。
您可以使用
$ php spark create:model [model_name]
现在,在 "app/Models" 中,你可以看到新模型文件如下
<?php namespace App\Models; use CodeIgniter\Model; class User extends Model { protected $table = 'users'; protected $primaryKey = 'id'; protected $returnType = 'array'; protected $useSoftDeletes = true; protected $allowedFields = ['Field1', 'Field2']; protected $useTimestamps = false;
创建基本模型
使用命令
$ php spark create:model [model_name] -basic
现在,在“app/Models”中,你可以看到新的基本模型文件如下
<?php namespace App\Models; use CodeIgniter\Model; class User extends Model { protected $DBGroup = 'group_name'; }
这个空类提供了方便访问数据库连接、查询构建器和许多其他便利方法的途径。
您需要将“group_name”替换为数据库配置文件中定义的数据库组名称。
创建手动模型
如果您不需要扩展任何特殊类来创建应用程序的模型,您只需要获取数据库连接的实例。
您可以使用这个
$ php spark create:model [model_name] -manual
现在,在“app/Models”目录下,您可以看到如下所示的新手动模型文件
<?php namespace App\Models; use CodeIgniter\Database\ConnectionInterface; class User { protected $db; public function __construct(ConnectionInterface &$db) { $this->db =& $db; } }
创建实体模型
CodeIgniter支持将实体类作为数据库层的一等公民,同时使用起来完全可选。它们通常作为仓库模式的一部分使用,但也可以根据您的需求直接与模型一起使用。
您可以使用以下命令
$ php spark create:model [model_name] [entity_name] -entity
现在,在“app/Models”目录下,您可以看到如下所示的新手动模型文件
<?php namespace App\Models; use CodeIgniter\Model; class User extends Model { protected $table = 'users'; protected $allowedFields = [ 'Filed1', 'Filed2' ]; protected $returnType = 'App\Entities\User'; protected $useTimestamps = true; }
在“app/Entities”目录下,您可以看到如下所示的新手动模型文件
<?php namespace App\Entities; use CodeIgniter\Entity; class User extends Entity { // }
自定义命名空间
在创建模型文件时,如果您需要自定义命名空间,可以使用以下选项
$ php spark create:model [model_name] -space
"-space"选项可以声明在其它选项之后。
在Codeigniter中,命名空间通常映射到实际的文件存储路径,因此使用此命令将根据您输入的值自动创建文件夹。
现在,在“app/Models/Api/System”目录下,您可以看到如下所示的新手动模型文件
<?php namespace App\Models\Api\System; use CodeIgniter\Model; class User extends Model { //... }