截至发布这篇文章的时候,Laravel 在 Github 上已经有 911 名贡献者,他们中的一些人正在帮助框架在日常的基础上加入一些更棒的东西。下面总结了一下 Laravel 5.2.23 中将加入的一些新功能。
1. in_array() 校验规则
Laravel 中的数组校验是非常棒的,最近我把我项目中的很多代码进行了替换,只需要简短的几行代码。在 5.2.23 中将加入一个新的规则,帮助校验一个 key 的值是否在另一个相关的 key 中。
Validator::make( [ 'devices' => [['user_id' => 1], ['user_id' => 2]], 'users' => [['id' => 1, ['id' => 2]]] ], ['devices.*.user_id' => 'in_array:users.*.id']);
这段代码会确保 user_id 的值都在 users 中。
2. Arr::first() & Arr::last() 提供了可选的回调函数
在前一个版本中,回调函数作为第二个参数是必选的,而在 5.2.23 中将变成可选参数。
$array = [100, 200, 300];// (NEW) This will return 100Arr::first($array); /** same for **/ array_first($array);// (NEW) This will return 300Arr::last($array); /** same for **/ array_last($array);// (You still can) do this and return 200Arr::first($array, function ($key, $value) { return $value >= 150;});
3. 一次指定多个中间件
当为控制器添加中间件的时候,现在可以在一条语句中注册多个中间件了。
$this->middleware(['auth', 'subscribed'], ['only' => ['getCandy']]);
4. Blade 中添加了新的指令 @php, @endphp, @unset
@php 指令允许你这样写 PHP 语句:
@php($count = 1)@php(++ $count)
@php $now = new DateTime(); $environment = isset($env) ? $env : "testing";@enphp
@unset() 其实就是对 unset() 的一个封装:
@unset($count)
5. 重写 Blade 核心指令的能力
在 5.2.23 之前你是不能扩展 Blade 和重写核心指令的,而现在你可以重写任何的核心指令。
6. 避免编译 Blade 指令
现在你可以在 Blade 指令前添加一个 @ 符号来避免编译指令。
// output: <?php continue; ?>@continue// output: @continue@@continue
7. 对 SparkPost 新的邮件驱动
8. 新的调度命令 monthlyOn()
$schedule->call(function () { DB::table('shopping_list')->delete();})->monthlyOn(4, '12:00');
9. 新的 app()->isLocale() 方法
// Instead of thisif (app()->getLocale() == 'en')// You can do thatif (app()->isLocale('en'))
10. 使用查询生成器查询 MySQL 5.7 生成 JSON 字段更加流畅
MySQL 5.7 发布后,引入了一个新的 JSON 类型的字段,在 Laravel 5.2.23 中你可以像之前那样快速的查询出 Json 字段。
假设我们的 users 表中有个 JSON 类型的 name 列,其中有下面这样一个值:
{"en":"name","ar":"nom"}
你可以使用下面的语法查询该值:
User::where('name->en', 'name')->get();// You may dive deep in the JSON string using the `->` operator.User::where('contacts->phone->home', 1234);
11. 测试辅助方法 seeElement() 和 dontSeeElement()
假设有下面这样的元素:
<image width="100" height="50">
你可以使用下面的测试方法:
$this->seeElement('image', ['width' => 100, 'height' => 50]);$this->dontSeeElement('image', ['class' => 'video']);
12. 隐藏福利 #1
你知道你已经可以这么做了吗?
User::whereNameAndEmail('jon', 'jon@theWall.com')->first();User::whereNameAndEmailOrPhone('jon', 'jon@theWall.com', '123321')->first();DB::table('users')->whereEmailOrUsername('mail@mail.com', 'themsaid')->first();
13. 隐藏福利 #2
// Instead of this:if(!$item){ abort(404);}// You can do that:abort_unless($item);// You may also have something like this:abort_if($item->is_hidden);
译自: themsaid ,转载请注明来自Specs’ Blog。

本文比较了PHP和ASP.NET,重点是它们对大规模Web应用程序,性能差异和安全功能的适用性。两者对于大型项目都是可行的,但是PHP是开源和无关的,而ASP.NET,

本文讨论了PHP数据对象(PDO),这是PHP中数据库访问的扩展名。它通过准备好的语句及其对MySQLI的好处,包括数据库抽象和更好的错误处理,强调了PDO在增强安全性方面的作用。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

Dreamweaver Mac版
视觉化网页开发工具

WebStorm Mac版
好用的JavaScript开发工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。