这里的步骤都是直接在框架中加的,而不是利用命令
本文引用一个例子:现在要做一个从某一大型数据统计网站提供的接口中提取出我想要的数据,并且提供一个artisan命令能够在控制台将从接口获得的数据显示在控制台界面
框架为laravel 5
- 首先要了解你的这个命令的整个调用执行的流程,在本文的例子中的执行过程即为
先通过控制台传入用户想调用的artisan命令
然后传入laravel框架,在laravel框架中会启动相应的你自己开发Command文件
Command文件会调用相应的执行提取数据操作的文件的提取数据,从而显示
清楚了你的这条artisan命令的执行流程,就可以一步一步来实现 - 首先开发你需要的执行核心操作的文件,这个是整个artisan命令功能实现的核心处,在本例中就是对应的为从数据统计网站提供的接口中提取数据的文件,然后将你开发的核心功能的文件放置在Model文件夹下,不同版本的laravel框架下的文件夹命名不一样,功能也略有差异,但是大致上是一致的,Model文件夹的名字可以自己改,但是最好要具有一定的功能提示作用,例如OringinalModel之类的名字,本文中执行数据提取的文件可命名为
API.php
,其中有一个方法为public static func(){ //提取数据 }
- 然后是开发Command文件,Command文件作用是调用你的核心功能实现的文件,本文中可新建一个
DataCommand.php
文件,并且放置在app/Console/Command
文件夹下(laravel5),这个DataCommand.php
文件的代码中就会调用API.php
文件中的方法
protected $signature = 'report:conversion
{--to= : 收件人}
{--cc= : 邮件抄送 }
{--date= : 指定统计数据日期格式}
{--send= : 是否发送邮件,yes/no }';
protected $description = '此命令用来提取数据并发送邮件';
public function fire(){
API::func();
}
```
这个文件是用来制作artisan命令的相关信息与功能,此文件中有几个变量与方法值得注意
$signature 变量是用来描述命令的名字与参数
$description 变量存储命令描述
fire() 方法为执行你的自定义命令时自动调用
程序中可以通过 $this->option() 方法获得相应的控制台的传入的参数,例如获得日期
$date = $this->option(date);
- 最后就是在app/Console/Kernel.php文件中添加你的命令,在Kernel.php文件中有一个$commands变量,在这个数组变量中添加即可,例如
protected $commands = [ \App\Console\Commands\DataCommand::class ];
就能添加进去了
- 检验下,在控制台中输入php artisan命令就会出现命令列表,以首字母排序,你的命令就会在这个列表显示
如此这般,laravel框架下一个artisan命令就制作完成了。
网友评论