资讯专栏INFORMATION COLUMN

我最喜欢 Laravel 5.6 的三个功能

Little_XM / 2129人阅读

摘要:比较常见的一个例子是,一个布尔类型的字段在数据库中的存储的和,但是在应用中需要转换为布尔类型。这个属性将被转换为原生的布尔类型提醒查看所有的属性类型转换请见文档。讨论请前往知识社区我最喜欢的三个功能

昨天,就在 Laracon 线上会议开始之前, Taylor Otwell 发布了 Laravel 5.6 。在维也纳,我们参与了一个小型会议,一起愉悦地观看了所有演讲。在其中一个演讲过程中, Taylor 带我们浏览了 Laravel 的新功能,我将列出其中我最喜欢的三个。

1. Collision

Collision 是 Nuno Maduro 制作的包,现在已经是 Laravel 开发依赖的一部分。它是一个针对命令行应用的错误处理框架,构建于 Whoops 包之上。 Whoops 负责浏览器的错误处理逻辑,能够提供一份漂亮的发生事件概览。 Collision 完成同样的任务,只不过针对的是命令行应用。

简单的样例

假设我正在创建一个新的 Laravel 命令,用于删除一些旧的备份数据。现在这个命令的具体用途并不重要,它被命名为 BackupFlush,调用它的命令信号为 backupflush:doit

doIt();
    }
}

在命令的处理方法中,调用了一个不存在的方法 doIt 。我们将使用这个语句触发一个错误。让我们调用这个命令,看看会发生什么。

php artisan backupflush: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. Eloquent 日期转换器

从 Laravel 5.6 版本开始你可以转换 Eloquent 属性。比较常见的一个例子是,一个布尔类型的字段在数据库中的存储的 0 和 1,但是在应用中需要转换为布尔类型(true or false)。通过在模型中设置转换器就能实现这个功能。

 "boolean",
    ];
}

提醒: 查看所有的属性类型转换 请见文档。

现在 Laravel 5.6 也能够很好的转换日期类型了:

protected $casts = [
    "is_admin" => "boolean",
    "released" => "date:Y",
];

首先将需要被转换的字段定义为属性名称。然后定义日期函数(date 或者 datetime),紧接着,在分号后面定义日期格式。在我的例子中,我想转为换只显示年份,所以我的转换器定义是 date:Y

以前,模型修改器 可以实现类似的功能,但在以后会被日期转换器代替。所以,建议你现在就开始使用的方案来实现这类功能,因为它非常的强大而实用。

结语

事实上,与其他版本相比,5.6 版本的版本变化相对较小。尽管如此,它还是带来了许多不错的功能,我希望你和我一样对这里提到的这三个功能感到兴奋。非常感谢 Taylor 和所有的贡献者对工作的支持。可以通过 推特 告诉我你最喜欢的功能。

讨论请前往 Laravel 知识社区: 我最喜欢 Laravel 5.6 的三个功能

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28436.html

相关文章

  • PHP / Laravel 月刊 #23

    摘要:大刀阔斧的改造在学习了两遍之后,基于教程开发的校园二手书交易平台熊能本周阅读清单纸牌屋弗兰克知道的太晚了实现微信红包拆分算法聊聊最近求职发生的故事無铭更多现代化知识,请前往知识社区 showImg(https://segmentfault.com/img/bV8ctF?w=1650&h=1100); 最新资讯 Laravel 5.6 中文文档翻译完成,译者 60 人,耗时 10 天...

    klinson 评论0 收藏0
  • PHP 5.6,7.0,7.1,7.2 和 HHVM 运行效率比较

    摘要:测试运行多次并取平均值。文章数量测试的基准测试基准测试结果基准测试结果基准测试结果基准测试结果基准测试结果基准测试结果不支持再次成为冠军请注意的运行环境需要或以上。同时,再次不能正常工作并抛出错误。 showImg(https://segmentfault.com/img/remote/1460000013690286); 我们每年都会尝试深入了解不同版本的 PHP 和 HHVM 在各...

    cnTomato 评论0 收藏0
  • Laravel 5.6 正式发布(文档翻译工作将在春节后启动)

    摘要:默认的应用哈希驱动通过新增的配置文件来控制。你可以在我们的文章中学习到更多的关于密码哈希算法的内容方法在类中引入了两个新的生成唯一的方法引入了两个新的方法来生成。 showImg(https://segmentfault.com/img/remote/1460000013229904?w=1400&h=708); Laravel 5.6 Laravel 5.6正式成为laravel框架...

    Kross 评论0 收藏0
  • Laravel 5.6 中文文档翻译完成,译者 60 人,耗时 10 天

    摘要:图片来自的文档地址文档页面总结文档翻译完成,总共耗时天,参与用户人。我们翻译过,这是效率最高的一次。译者所有的参与的用户都已添加上译者身份,感谢这些勤劳的译者。 showImg(https://segmentfault.com/img/remote/1460000013674606); 图片来自 laravel-news.com Laravel 5.6 的文档地址: Laravel 5...

    MAX_zuo 评论0 收藏0
  • 分享一些简单 Laravel 编码实践

    摘要:关于,它使用起来简单且舒适适用于编写产品代码,并能极大的推动开发过程。这里有一些在开发中值得记住的简单建议最大限度的使用你的文件不要破坏框架核心,不要编辑文件夹中的文件,你可以选择继承相关函数来实现。 showImg(https://segmentfault.com/img/remote/1460000018416776?w=808&h=449); 将任何 PHP 框架称为最好的框架都...

    cyixlq 评论0 收藏0

发表评论

0条评论

Little_XM

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<