首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

3分钟短文:Laravel用户自定义命令行简明教程

引言

完成一个功能需求,有时候并不需要一个界面UI,比如定时任务,后台任务, 对于这类任务往往比较耗时,在一个web页面生命周期内,要拖的很久。这时候我们 需要将其放在后台交给操作系统执行。

本期说一说laravel中,自建命令行的简要方法。

代码时间

在laravel中命令行被称作Artisan类,你可以很轻松地使用自带的脚手架创建一个命令行文件。我们使用欢迎新用户这样的一个假设需求做示例:

php artisan make:console WelcomeNewUsers --command=email:newusers

这样就会在目录 app/Console/Commands/ 下创建一个WelcomeNewUsers.php文件。我们来看一下这个文件长啥样。首先是头部的命名空间,和类引用:

namespaceApp\Console\Commands;useIlluminate\Console\Command;

然后是类的内容:

classWelcomeNewUsersextendsCommand{

protected$signature='email:newusers';

protected$description='Command description';

publicfunction__construct()

{

parent::__construct();

}

publicfunctionhandle()

{

//

}

}

为了演示,我们把注释都给去掉了。其中$signarute就是命令行中--command所声明的形式。属性$description是命令的描述。

我们的业务逻辑,在handle()方法内实现就可以了。

要让这个命令行可以调用,需要手动注册,在app/Console/Kernel.php文件的添加如下内容:

protected$commands=[

\App\Console\Commands\WelcomeNewUsers::class,

];

这样就可以在应用根目录下,打开命令行,输入以下命令:

php artisan email:newusers

因为没有任何逻辑代码,执行会顺利结束,且没有任何提示信息。现在我们给handle方法内添加一些业务逻辑代码:

User::signedUpThisWeek()->each(function($user){

Mail::send(

'emails.welcome',

['name'=>$user->name],

function($m)use($user){

$m->to($user->email)->subject('Welcome!');

}

);

});

注意上面的代码,我们默认省略了一些语法糖。首先是一个User模型的本地作用域,

publicfuncitonscopeSignedUpThisWeek($query){

return$query->where('signed_at','>=',Carbon::now()->startOfWeek());

}

另外还有一个类和方法Mail::send()是用于邮件发送的,我们在其他篇幅再做介绍。

经过上面的代码,我们每次调用

php artisan email:newusers

的时候,都会把数据库中本周注册的新用户拉取出来,挨个发送email。

写在最后

本文通过演示为新用户发送邮件的需求,使用命令行创建文件, 并在命令行处理方法内书写逻辑代码。为大家演示了laravel命令行最初步的用法。通常我们在命令行中会有参数传递,也极为常见,下文我们为大家演示。

Happy coding :-)

我是@程序员小助手,持续分享编程知识,欢迎关注。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200915A041W400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券