monken/cli-create

Cli-Create基于CodeIgniter4。它可以帮助您在用CodeIgniter4开发项目时更快速地生成模板文件。

v0.3.1 2020-05-30 08:05 UTC

This package is auto-updated.

Last update: 2024-09-07 02:45:51 UTC


README

Latest Stable Version Total Downloads License

Cli-Create基于CodeIgniter4。它可以帮助您在用CodeIgniter4开发项目时更快速地生成模板文件。

中文使用说明

指南

安装

先决条件

  1. CodeIgniter框架4.*
  2. 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.
    
  • 参数

    1. 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.
    
  • 参数

    1. 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'],
]);

创建控制器 - 模型

为与新的控制器一起使用创建新的模型。

  • 使用

    1. 使用 "create:模型" 指令提供的选项。
    $ php spark create:controller [controller_name] [controller_options] -model [model_name]
    
    1. 使用 "Create: 模型" 命令提供的选项未被使用。
    $ php spark create:controller [controller_name] [controller_options] -model=[model_options] [model_name] [entity_name] 
    
  • 描述

    Create new controller and model.
    
  • 参数

    1. controller_name : 控制器名称
    2. controller_options : 控制器提供的选项。
    3. model_options : "create:model" 提供的选项。如果您想使用多个选项,请注意,它们必须用逗号分隔,去掉 "-",并在 "=" 后面立即出现。
    4. model_name : 模型名称。
    5. 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.
    
  • 参数

    1. model_name : 模型名称
    2. 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
{
    //...
}