Artisan 开发

简介

除了 Artisan 本身提供的命令之外,您也可以建立与您的应用程序相关的命令,这些自建命令将会存放在 app/commands 目录底下;然而,您可以任意选择存放位置,只要您的命令能够被 composer.json 自动载入。

自定义命令

生成类

要创建一个新的命令,您可以使用 command:make 这个 Artisan 命令,这将产生一个命令基本文件协助您开始编码:

生成一个新的命令类php artisan command:make FooCommand

默认情况下,生成的命令将被储存在 app/commands 目录;然而,您可以指定自定义路径或命名空间:php artisan command:make FooCommand --path=app/classes --namespace=Classes

在创建命令时,加上 --command 这个选项,将可以指定这个命令的名称:php artisan command:make AssignUsers --command=users:assign

撰写自定义命令

当自定义命令生成后,您需再填写命令的 名称 与 描述,这部份将会显示在命令行表清单的画面上。

当您的自定义命令被执行时,将会调用 fire 方法,您可以在此加入任何的逻辑判断。

参数与选项

getArguments 与 getOptions 方法是用来接收要传入您的自定义命令的地方,这两个方法都会回传一组命令数组,并由数组清单所组成。

当定义 arguments 时,该数组对应的值表示如下:array($name, $mode, $description, $defaultValue)

参数 mode 可以是下列其中一项: InputArgument::REQUIRED 或 InputArgument::OPTIONAL.

当定义 options 时,该数组对应的值表示如下:array($name, $shortcut, $mode, $description, $defaultValue)

对选项而言, 参数 mode 可以是下列其中一项: InputOption::VALUE_REQUIRED, InputOption::VALUE_OPTIONAL, InputOption::VALUE_IS_ARRAY, InputOption::VALUE_NONE.

该 VALUE_IS_ARRAY 模式表示调用命令时可以传入多个值:php artisan foo --option=bar --option=baz

该 VALUE_NONE 模式表示将选项当作是"开关"php artisan foo --option

取得输入

当您的命令执行时,您需要让您的应用程序可以获取到这些参数和选项的值, 要做到这一点,您可以使用 argument 和 option 方法:

取得自定义命令的输入参数$value = $this->argument('name');

取得所有自定义命令的输入参数$arguments = $this->argument();

取得自定义命令的输入选项$value = $this->option('name');

取得所有自定义命令的输入选项$options = $this->option();

产生输出

显示信息到终端上,您可以使用 info, comment, question 和error方法,每一种方法将会对应到一个 ANSI 颜色。

显示信息到终端$this->info('Display this on the screen');

显示错误信息到终端$this->error('Something went wrong!');

询问式输入

您也可以使用 ask 和 confirm 方法来提示用户进行输入:

提示用户进行输入$name = $this->ask('What is your name?');

提示用户进行加密输入$password = $this->secret('What is the password?');

提示用户进行确认if ($this->confirm('Do you wish to continue? [yes|no]'))

{

//

}

您也可以指定一个默认值给 confirm 方法,可以是 true 或 false:$this->confirm($question, true);

注册命令

注册一个 Artisan 命令

当您的自定义命令完成后,您需要向 Artisan 注册才能使用,通常是在 app/start/artisan.php ,在此文件内,您可以使用 Artisan::add 方法注册该命令:Artisan::add(new CustomCommand);

在 IoC Container 内注册命令

如果您的自定义命令是在应用程序 IoC container 内注册,您需要使用 Artisan::resolve 方法让 Artisan 可以使用:Artisan::resolve('binding.name');

在 Service Provider 内注册命令

如果您需要从 service provider 注册命令,您应该在 provider 的 boot 方法内调用 commands 方法,传入 IoC container 绑定此命令:public function boot()

{

$this->commands('command.binding');

}

调用其它命令

有时候您可能希望在您的命令内部调用其它命令,此时您可以使用 call 方法:$this->call('command:name', array('argument' => 'foo', '--option' => 'bar'));

php artisan tanker,Artisan 开发相关推荐

  1. php artisan dumpautoload,artisan 命令使用总结

    artisan 命令使用过程的一些记录! ==数据迁移== 之前一直对数据迁移很感兴趣,也看过了几遍文档,一直没怎么理解,也没怎么深入研究,今天得空,认真看了文档,百度了一些相关文章 点击这里,亲自试 ...

  2. php artisan command,artisan command 小技巧

    我遇到了command创建model的问题 我猜使用laravel开发的同学和我差不多应该都有一个强迫症,就是php artisan make:model Topic 后,会把app下的模型移动到自己 ...

  3. php artisan --,php artisan

    报错信息: make 是创建php文件的命令,你截图里的 make:command 是创建一个命令行任务,比如你创建了一个命令 test ,就可以在命令行执行 php artisan test 来执行 ...

  4. php artisan nohup,artisan命令生成和redis消息订阅和任务调度

    提示,本文章是针对5.3版本 执行命令生成一个artisan命令,文件会在1app/Console/Commands目录下 php artisan make:command Tcm --command ...

  5. laravel中artisan工具(命令)的使用详解

    artisan工具,首先,这个是一个php文件,它放在我们laravel框架的根目录 Artisan工具简介 Artisan 是 Laravel 中自带的命令行工具的名称.它提供了一些对您的应用开发有 ...

  6. 【老姐学PHP】PHP框架lavarel之Artisan命令

    php artisan功能测试 1.php artisan 命令列表 2.常用命令 3.php artisan route 4.php artisan make 4.1 php artisan mak ...

  7. php artisan命令表,php artisan 命令列表

    php  artisan 命令列表 命令获取 上面的翻译内容 命令说明备注 php artisan make:resource ?创建api返回格式化资源>=5.4版本可用 php artisa ...

  8. laravel artisan 使用

    全局篇 查看artisan命令 php artisan php artisan list 查看某个帮助命令 php artisan help make:model 查看laravel版本 php ar ...

  9. Artisan、文件上传、缓存使用、错误和日志

    Artisan artisan是laravel中自带的命令行工具的名称 由强大的Symfony Console组件驱动的 提供了一些对应用开发有帮助的命令 查看所有可用的Artisan的命令(list ...

最新文章

  1. Node.js 在本地生成日志文件
  2. 老男孩Python全栈开发(92天全)视频教程 自学笔记07
  3. java ajax 点赞功能_Ajax+jQuery+bootstrap+Java实现异步点赞功能,并限制点击次数
  4. Doom HDU - 5239(线段树+思维)
  5. java context.write_Channel.write() 和 ChannelHandlerContext.write() 的区别
  6. 神经网络与深度学习——TensorFlow2.0实战(笔记)(三)(python常量、变量和表达式)
  7. Informix IDS 11零碎治理(918考试)认证指南,第 7 部分: IDS复制(24)
  8. 腾云驾雾的计算,让你蒙圈了么?
  9. 福州大学软件工程1916|W班 第10、11次作业成绩排名
  10. 甲骨文前高管跳槽至富士通 主抓企业级存储
  11. LR回归原理和损失函数的推导
  12. 程序流程图生成器 程序源代码生成/转换成流程图 函数调用关系图
  13. SOTA级发丝抠图模型PP-Matting开源,支持多场景精细化分割
  14. ArcGIS 拓扑验证与编辑共享要素
  15. 华软计算机网络课程设计任务,计算机网络网络课程设计任务.doc
  16. 计算机网络——大数据、物联网
  17. java.io.InvalidClassException: made.customException; local class incompatible: stream classdesc seri
  18. ps cs6选择并遮住在哪
  19. 利用python-docx和docxcompose实现word合并,自动化办公
  20. 如何在Excel中使用公式将生日自动转换成星座?

热门文章

  1. 文档中的文字太紧凑,word行间距怎么调整?
  2. HTML+JS实现浏览器前端下载图片
  3. CUDA C++基本写法
  4. 如何秒下单?python的淘宝秒杀抢购下单源码参考
  5. SolidWorks的通过函数驱动绘制曲线
  6. 金蝶软件怎么过账_金蝶专业版怎么反过账
  7. 解读!10篇人机交互领域高引论文合集
  8. C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果
  9. java 打印机类printer_GitHub - 505058216/thermal_printer: Java实现网络小票打印机自定义无驱打印...
  10. UEFI启动流程浅析