日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

laravel artisan 后台运行_3分钟短文:Laravel用户自定义命令行简明教程

發(fā)布時(shí)間:2024/4/13 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 laravel artisan 后台运行_3分钟短文:Laravel用户自定义命令行简明教程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

引言

完成一個(gè)功能需求,有時(shí)候并不需要一個(gè)界面UI,比如定時(shí)任務(wù),后臺(tái)任務(wù), 對(duì)于這類任務(wù)往往比較耗時(shí),在一個(gè)web頁(yè)面生命周期內(nèi),要拖的很久。這時(shí)候我們 需要將其放在后臺(tái)交給操作系統(tǒng)執(zhí)行。

本期說(shuō)一說(shuō)laravel中,自建命令行的簡(jiǎn)要方法。

代碼時(shí)間

在laravel中命令行被稱作Artisan類,你可以很輕松地使用自帶的腳手架創(chuàng)建一個(gè)命令行文件。 我們使用歡迎新用戶這樣的一個(gè)假設(shè)需求做示例:

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

這樣就會(huì)在目錄 app/Console/Commands/ 下創(chuàng)建一個(gè) WelcomeNewUsers.php 文件。 我們來(lái)看一下這個(gè)文件長(zhǎng)啥樣。首先是頭部的命名空間,和類引用:

namespace AppConsoleCommands; use IlluminateConsoleCommand;

然后是類的內(nèi)容:

class WelcomeNewUsers extends Command {protected $signature = 'email:newusers';protected $description = 'Command description';public function __construct(){parent::__construct();}public function handle(){//} }

為了演示,我們把注釋都給去掉了。其中 $signarute 就是命令行中 --command 所聲明的形式。 屬性 $description 是命令的描述。

我們的業(yè)務(wù)邏輯,在 handle() 方法內(nèi)實(shí)現(xiàn)就可以了。

要讓這個(gè)命令行可以調(diào)用,需要手動(dòng)注冊(cè),在 app/Console/Kernel.php 文件的添加如下內(nèi)容:

protected $commands = [AppConsoleCommandsWelcomeNewUsers::class, ];

這樣就可以在應(yīng)用根目錄下,打開(kāi)命令行,輸入以下命令:

php artisan email:newusers

因?yàn)闆](méi)有任何邏輯代碼,執(zhí)行會(huì)順利結(jié)束,且沒(méi)有任何提示信息。 現(xiàn)在我們給 handle 方法內(nèi)添加一些業(yè)務(wù)邏輯代碼:

User::signedUpThisWeek()->each(function ($user) {Mail::send('emails.welcome',['name' => $user->name],function ($m) use ($user) {$m->to($user->email)->subject('Welcome!');}); });

注意上面的代碼,我們默認(rèn)省略了一些語(yǔ)法糖。首先是一個(gè)User模型的本地作用域,

public funciton scopeSignedUpThisWeek($query) {return $query->where('signed_at', '>=', Carbon::now()->startOfWeek()); }

另外還有一個(gè)類和方法 Mail::send() 是用于郵件發(fā)送的,我們?cè)谄渌僮鼋榻B。

經(jīng)過(guò)上面的代碼,我們每次調(diào)用

php artisan email:newusers

的時(shí)候,都會(huì)把數(shù)據(jù)庫(kù)中本周注冊(cè)的新用戶拉取出來(lái),挨個(gè)發(fā)送email。

寫(xiě)在最后

本文通過(guò)演示為新用戶發(fā)送郵件的需求,使用命令行創(chuàng)建文件, 并在命令行處理方法內(nèi)書(shū)寫(xiě)邏輯代碼。為大家演示了laravel命令行最初步的用法。 通常我們?cè)诿钚兄袝?huì)有參數(shù)傳遞,也極為常見(jiàn),下文我們?yōu)榇蠹已菔尽?/p>

Happy coding :-)

我是@程序員小助手,持續(xù)分享編程知識(shí),歡迎關(guān)注。

總結(jié)

以上是生活随笔為你收集整理的laravel artisan 后台运行_3分钟短文:Laravel用户自定义命令行简明教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。