Artisan 命令详解

优质
小牛编辑
136浏览
2023-12-01

目前Artisan只是实现了一些常用的功能,比如创建数据库,创建数据表,创建服务,控制器,模型等。

除此之外,还可以执行终端任务,这个功能非常强大,任务程序中你除了拿不到 Web 相关的数据(ip, url, session等),其他框架资源你都可以随意调用。 你可以意味着你可以使用编写任何复杂的终端 controller, 将控制器在终端运行 (后面有演示 demo)。

在app根目录下执行

php artisan --help
##或者输入
php artisan -h

注意,请先确保 php 命令行脚本已经添加到你的系统的环境变量中了。

就可以看到所有的artisan命令和参数了。类似如下所示:

下面简单介绍一下artisan的使用

创建任务

我们为终端任务定义了一个统一的接口,因此你的任务只需要实现ITask 接口就行了, 假设任务的名称为 mytest

那么你只需要添加一个任务的具体实现类:{app}/client/tasks/MytestTask.class.php, 这个类必须实现 tasks\interfaces\ITask

client\tasks\interfaces\ITask 源码

namespace client\tasks\interfaces;
interface ITask {
    // 运行任务入口方法,类似 C 语言的 main 函数
    public function run();
}

TestTask.class.php 可以这样写:

namespace client\tasks;
use client\tasks\interfaces\ITask;
use herosphp\core\Loader;
use app\user\service\UserService;

class TestTask implements ITask {
  public function run() {
    tprintOk("Hello, world!");
    // 你也可以调用服务,操作数据库,就跟在控制器中一样
    $userService = Loader::service(UserService::class);
    $users = $userService->find();
  }
}

温馨提示: 框架里面内置了linux终端彩色打印的函数,tprintOk, tprintError, tprintWarning. 具体使用方法参考 全局函数

运行任务

运行任务很简单,切换到项目根目录,执行以下命令:

cd www/app
php artisan --run  test

创建数据库

参数名称参数说明
make-db数据库的名称(必需)
dbhost主机名(默认127.0.0.1)
dbuser用户名(默认root)
dbpass密码(默认123456)
charset字符编码(默认utf8)
php artisan --make-db user --dbhost 127.0.0.1 --dbuser root --dbpass 123456

创建数据表

由于创建表的时候需要的参数太多,就没有通过命令行去传参数,而是使用xml去传参数的。 默认xml文档是放在 {app}/build 目录下的。注意,这里的{app} 是指应用的根目录,不是项目的根目录。

这里贴出一个 demo xml 文件

<root dbhost="locme alhost" dbuser="root" dbpass="123456" dbname="test1" charset="utf8">

  <table name="user" comment="用户表" engine="InnoDB">
    <pk name="id" type="char(32)" />

    <fields>
      <field name="username" type="varchar(32)" default="" comment="用户名" add-index="true" index-type="unique" />
      <field name="password" type="char(32)" default="" comment="密码" />
      <field name="role_id" type="int(5)" default="0" comment="角色ID" />
      <field name="addtime" type="int(11)" default="NULL" comment="添加时间" />
      <field name="updatetime" type="int(11)" default="NULL" comment="更新时间" />
    </fields>

  </table>

  <table name="role" comment="角色表" engine="InnoDB">
    <pk name="id" type="int(11)" ai="true" />

    <fields>
      <field name="name" type="varchar(15)" default="" comment="角色名称" />
      <field name="summary" type="varchar(255)" default="" comment="角色描述" />
      <field name="permissions" type="text" comment="角色权限" />
      <field name="addtime" type="int(11)" default="NULL" comment="添加时间" />
      <field name="updatetime" type="int(11)" default="NULL" comment="更新时间" />
    </fields>

  </table>

  <table name="admin" comment="管理员表" engine="InnoDB">
    <pk name="id" type="int(11)" ai="true" />

    <fields>
      <field name="user" type="varchar(32)" default="" comment="用户名" add-index="true" index-type="unique" />
      <field name="pass" type="varchar(32)" default="" comment="密码" />
      <field name="role_id" type="tinyint(4)" default="0" comment="角色ID" />
      <field name="addtime" type="datetime" default="NULL" comment="添加时间" />
      <field name="edittime" type="timestamp" default="CURRENT_TIMESTAMP" comment="更新时间" />
    </fields>
  </table>
</root>

下面分别介绍一下各个xml节点的属性所代表的参数含义

root 根节点,配置数据的连接信息

属性名称属性说明
dbhost数据库主机名
dbuser数据库用户名
dbpass数据库用户密码
dbname数据库名称
charset数据库字符编码

table 每个闭合的table节点表示一个数据表的配置

属性名称属性说明
name表名称
comment数据表说明备注
engine数据表存储引擎,默认InnoDB

pk table 子节点,主键节点,配置主键属性

属性名称属性说明
name主键名称,必填
type数据类型,必填
ai是否自增类型,可选 true, false

field 字段配置节点,包在 fields 节点里面。

属性名称属性说明
name字段名称
type数据类型,可选值:int, char, varchar, datetime, timestamp, text 等
default默认值,可选值:空,NULL, 具体值
comment字段描述说明
add-index是否添加索引,true OR false
index-type索引类型,可选:unique(唯一),不填写则为普通索引.

创建模型(Model)

make-model 命令, 可以创建单个Model,也可以用你创建数据表的xml直接 批量创建模型,如果 --make-model 参数传入的是xml文档,则表示是使用 xml文档来创建Model, 如:

php artisan --make-model user.xml

需要留意的是,我们也支持创建关联模型,只需要你在 table 标签内加入 flagments 标签。flagments 标签里面可以嵌套多个 model 标签,也就是说一个模型是可以关联多个模型的,model标签的属性如下:

属性名称属性说明
name模型名称,如 user
fields关联字段,用来读取字段合并到结果。

创建单个模型需要传入的参数会多一些:

参数名称参数说明
make-model模型名称,必填
tableModel 关联的数据表,必填
pk数据表主键,必填,默认值:id
author创建模型的作者,可选
email作者email, 可选
date创建时间,可选,默认值:当天
desc模型描述,可选

完整命令demo

php artisan --make-model user --table herosphp_user --pk id --author yangjian --email yanjian102621@gmail.com --desc "User model"

创建服务

参数名称参数说明
make-service服务名称,必填,如user
module所属模块,必填
author创建模型的作者,可选
email作者email, 可选
date创建时间,可选,默认值:当天
desc服务描述,可选
extend继承父类,可选,默认值:common\service\CommonService, 如果为false,则表示没有父类
php artisan --make-service user --module member --desc "用户服务" --extend false

创建控制器

参数名称参数说明
make-controller控制器名称,必填
module所属模块,必填,如果是admin, 则会自动继承CommonAction, 否则会继承 Controller 基类
author创建模型的作者,可选
email作者email, 可选
date创建时间,可选,默认值:当天
desc模型描述,可选
php artisan --make-controller news --module user --desc "新闻资讯Controller" --author yangjian --email yangjian102621@gmail.com