Artisan命令

目前Artisan只是实现了一些常用的功能,比如创建数据库,创建数据表,创建服务,控制器,模型等。当然,还可以执行终端任务。

在app根目录下执行

./artisan --help
##或者输入
./artisan -h

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

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

创建数据库

参数名称 参数说明
make-db 数据库的名称(必需)
dbhost 主机名(默认127.0.0.1)
dbuser 用户名(默认root)
dbpass 密码(默认123456)
charset 字符编码(默认utf8)
./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>

    <flagments>
      <model name="userInfo" fields="userid, bcontent, mobile, email" />
      <model name="userShop" fields="*" />
    </flagments>
  </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, 如:

./artisan --make-model user.xml

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

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

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

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

完整命令demo

./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,则表示没有父类
./artisan --make-service user --module member --desc "用户服务" --extend false

创建控制器

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

创建任务

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

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

tasks\interfaces\ITask 源码

namespace tasks\interfaces;


interface ITask {

    /**
     * 运行任务
     * @return mixed
     */
    public function run();
} 

MytestTask.class.php 可以这样写:

namespace tasks;

use tasks\interfaces\ITask;
use herosphp\core\Loader;

Loader::import('tasks.interfaces.ITask', IMPORT_CLIENT);

class TestTask implements ITask {

        public function run() {

            tprintOk("Hello, world!");

            $this->addNews();


        }

        private function addNews() {

            $model = Loader::model("news");
            $timer = timer();
            for ( $i = 0; $i < 1000000; $i++ ) {
                $data = array(
                        'name' => 'xiaoming', 
                        'pass' => 'xiaoming_pass', 
                        'address' => 'china ShenZhen');
                $model->insert($data);
            }

            tprintOk("插入完成,耗时:".(timer() - $timer)." 秒");

        }

} 

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

运行任务

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

cd www/app
./artisan --run  mytest
Copyright © HerosPHP 2016 all right reserved,powered by Gitbook最后更新时间: 2017-03-28 20:50:52

results matching ""

    No results matching ""