昨天,就在Laracon虚拟会议之前,TaylorOtwell发布了Laravel5.6。在维也纳,我们参加了一个小型会议,一起观看了所有的演示。在一次演讲中,Taylor带我们了解了Laravel的新功能,我将列出我最喜欢的三个。1.CollisionCollision是NunoMaduro做的一个包,现在是Laravel开发依赖的一部分。它是一个用于命令行应用程序的错误处理框架,构建在Whoops包之上。Whoops负责浏览器的错误处理逻辑,可以很好地概述发生的情况。碰撞做同样的事情,但用于命令行应用程序。简单示例假设我正在创建一个删除一些旧备份数据的新Laravel命令。现在这个命令做什么并不重要,它被命名为BackupFlush,调用它的命令信号是backupflush:doit。doIt();}}在命令的处理方法中,调用了一个不存在的方法doIt。我们将使用此语句来触发错误。让我们调用这个命令,看看会发生什么。在phpartisanbackupflush:doit使用Collision之前,输出如下。事实上,这里的错误消息非常具有描述性。这还不够吗?这对于我们的小示例来说已经足够了,但那是因为我们故意放置错误并且知道它存在。否则,查找被调用方法的位置将非常困难。所以,这就是Collision可以帮助我们的地方,它会输出更漂亮的彩色输出。响应值包含有关抛出的异常的更多信息,将帮助我们更轻松地调试它。2.动态访问控制在Laravel中,你可以限制某些路由的请求频率。以下是文档一部分的示例。Route::middleware('auth:api','throttle:60,1')->group(function(){Route::get('/user',function(){//});});在上面的例子中,用户每分钟只能请求60次该组下的路由。这个很棒的功能是通过throttle中间件实现的。但是,在某些情况下这种控制是不够的,尤其是当您想通过其他条件来控制频率时。这就是动态访问控制发挥作用的时候。这是文档中的另一个示例代码:Route::middleware('auth:api','throttle:rate_limit,1')->group(function(){Route::get('/user',function(){//});});同理,使用throttle中间件,设置频率为1。但是,实际的请求数并不取决于这里设置的是什么,而是传递了一个属性名。在此示例中,rate_limit是用户表中的一个字段,用于计算最大请求数。这样就可以针对不同的用户设置不同的请求频率。例如:您需要为不同订阅计划的用户分配不同的频率。3.EloquentDateConverter从Laravel5.6开始你可以转换Eloquent属性。一个常见的例子是一个布尔型字段在数据库中存储0和1,但在应用程序中需要转换为布尔型(true或false)。这是通过在模型中设置转换器来完成的。'boolean',];}提醒:查看所有属性类型转换的文档。现在Laravel5.6也可以很好的转换日期类型:protected$casts=['is_admin'=>'boolean','released'=>'date:Y',];首先将需要转换的字段定义为属性名。然后定义日期函数(日期或日期时间),然后在分号后定义日期格式。在我的例子中,我想转换为只显示年份,所以我的转换器定义是date:Y。以前,ModelModifier可以实现类似的功能,但将来会被DateConverter取代。因此,建议您现在就开始使用该方案来实现这种功能,因为它非常强大和实用。结语其实5.6版本的版本变化相对于其他版本来说还是比较小的。尽管如此,它还是带来了很多不错的功能,我希望您和我一样对这里提到的三个功能感到兴奋。非常感谢泰勒和所有贡献者对这项工作的支持。通过推文让我知道您最喜欢的功能。前往Laravel知识社区??进行讨论:我最喜欢的三个Laravel5.6功能
