这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战
之前写了一篇Laravel提高DB查询效率的文章,转发到群里后竟然有人质疑我说“Laravel是他好几年前用的框架,没想到现在还有人在用。”
纳尼,什么意思嘛?别忘了php是最好的语言!
个人认为Laravel是非常优雅的开发框架:优雅的设计模式、强大的功能实现、各种方便的扩展、持续的版本更新,更主要的是迄今为止我认为最优秀的技术开发社区。
我必须为Laravel打Call。
2020年9月8号,Laravel发布了8.0版本。 Laravel计划于2022年1月25日发布9.0版本。
下面我介绍一下目前Laravel最新版(8.0版本)的新特性:
今天重点介绍 动态Blade组件、事件监听器优化、事件测试助手 相关的知识点
动态 Blade 组件
有时我们需要渲染一个组件,但是不确定在运行时应该渲染哪个组件。在这种情况下,我们现在可以使用 Laravel 内置的 dynamic-component 组件去根据运行时的某个值或某个变量来动态渲染组件:
<x-dynamic-component :component="$componentName" class="mt-4" />
事件监听器优化
现在可以通过给 Event::listen 方法传入一个闭包函数来简单的注册一个基于闭包的事件监听器。Laravel 会检查闭包以确定监听器处理的事件类型。
use App\Events\PodcastProcessed;
use Illuminate\Support\Facades\Event;
Event::listen(function (PodcastProcessed $event) {
//
});
此外,现在可以使用 Illumate\Events\Queueable 函数将基于闭包的事件监听器标记为可排队:
use App\Events\PodcastProcessed;
use function Illuminate\Events\queueable;
use Illuminate\Support\Facades\Event;
Event::listen(queueable(function (PodcastProcessed $event) {
//
}));
像队列任务一样,我们可以使用 onConnection、onQueue 和 delay 方法自定义队列监听器的执行:
Event::listen(queueable(function (PodcastProcessed $event) {
//
})->onConnection('redis')->onQueue('podcasts')->delay(now()->addSeconds(10)));
如果我们想处理匿名队列的监听器故障,可以在定义 queueable 监听器时给 catch 方法提供一个闭包:
use App\Events\PodcastProcessed;
use function Illuminate\Events\queueable;
use Illuminate\Support\Facades\Event;
use Throwable;
Event::listen(queueable(function (PodcastProcessed $event) {
//
})->catch(function (PodcastProcessed $event, Throwable $e) {
// The queued listener failed...
}));
时间测试助手
测试时,我们有时可能需要修改诸如 now 或 Illuminate\Support\Carbon::now() 之类的函数返回的时间。 Laravel 的基本功能测试类现在包括时间测试助手函数,我们可以使用它们来操纵当前时间:
public function testTimeCanBeManipulated()
{
// 时间穿越至未来...
$this->travel(5)->milliseconds();
$this->travel(5)->seconds();
$this->travel(5)->minutes();
$this->travel(5)->hours();
$this->travel(5)->days();
$this->travel(5)->weeks();
$this->travel(5)->years();
// 时间穿越至过去...
$this->travel(-5)->hours();
// 前往明确的时间...
$this->travelTo(now()->subHours(6));
// 回到当前时间...
$this->travelBack();
}
华丽的分割线
要了解更多有关在Laravel的知识点,请查看我的专栏: 服务端开发从入门到精通
推荐阅读
-
竟然有人质疑我还在用Laravel开发?别忘了PHP是最好的语言。(1)Laravel如何优雅的设置全局变量
-
竟然有人质疑我还在用Laravel开发?别忘了PHP是最好的语言。(2)Laravel Jetstream和模型工厂类
-
竟然有人质疑我还在用Laravel开发?别忘了PHP是最好的语言。(3)迁移压缩,队列批处理,改善速率限制
-
竟然有人质疑我还在用Laravel开发?别忘了PHP是最好的语言。(4)维护模式优化
Last but not least
技术交流群请到 这里来。 或者添加我的微信 wangzhongyang0601 ,一起学习。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!