Artisan 命令详解
目前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 | 模型名称,必填 |
table | Model 关联的数据表,必填 |
pk | 数据表主键,必填,默认值:id |
author | 创建模型的作者,可选 |
作者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, 可选 | |
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, 可选 | |
date | 创建时间,可选,默认值:当天 |
desc | 模型描述,可选 |
php artisan --make-controller news --module user --desc "新闻资讯Controller" --author yangjian --email yangjian102621@gmail.com