laravel5.6新特效

laravel5.6新特效

日志优化

Laravel 5.6 带来了日志系统的重大升级,所有日志配置都存放在新的 config/logging.php 配置文件,你现在可以轻松构建发送日志消息到多个处理器的日志"堆栈"。例如,你可以发送所有 debug 级别消息到系统日志同时发送 error级别消息到 Slack 以便团队成员可以快速响应:

'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['syslog', 'slack'],
    ],
],

此外,现在可以使用日志系统的新"tap"功能很轻松地自定义已存在的日志频道。想要了解更多细节,请查看完整日志文档

单机任务调度

注:要使用这个新特性,必须使用 memcached 或 redis 缓存驱动作为应用默认缓存驱动。此外,所有服务器必须和同一个中心缓存服务器进行通信。

如果你的应用运行在多个服务器上,现在可以限定只在一台机器上运行调度任务。例如,假设你有一个在每周五晚上生成新报告的调度任务,如果任务调度器运行在三个服务器上,这个调度任务就会在三台机器上运行并生成同样的报告三次,这样很不优雅,甚至很糟糕!

要指定任务只在一台机器上运行,可以在定义调度任务时使用 onOneServer 方法,第一台获取到任务的机器会给这个任务上一把原子级别的锁来阻止其他服务器同时运行同一个任务:

$schedule->command('report:generate')
                ->fridays()
                ->at('17:00')
                ->onOneServer();

动态频率限制

当我们在之前版本的路由群组中指定了频率限制后,必须要硬编码最大请求次数:

Route::middleware('auth:api', 'throttle:60,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});

在 Laravel 5.6 中,你可以基于认证用户模型属性指定一个动态的最大请求次数,如果 User 模型包含 rate_limit 属性,可以将属性名传递给 throttle 中间件,以便用于计算最大请求次数计数:

Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});

广播频道类

如果你的应用消费多个不同的频道,routes/channels.php 文件可能会变得很臃肿,所以,作为使用闭包来授权频道的替代方案,你现在可以使用频道类。要生成一个频道类,可以使用 Artisan 命令 make:channel。该命令会将新生成的频道类存放到 app/Broadcasting 目录下:

php artisan make:channel OrderChannel

接下来,在 routes/channels.php 文件中注册这个频道类:

use App\Broadcasting\OrderChannel;

Broadcast::channel('order.{order}', OrderChannel::class);

最后,可以将频道的授权逻辑放到频道类的 join 方法。join 方法中的代码等同于之前位于频道授权闭包中的处理逻辑。当然,你还可以使用频道模型绑定:

<?php

namespace App\Broadcasting;

use App\User;
use App\Order;

class OrderChannel
{
    /**
     * Create a new channel instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Authenticate the user's access to the channel.
     *
     * @param  \App\User  $user
     * @param  \App\Order  $order
     * @return array|bool
     */
    public function join(User $user, Order $order)
    {
        return $user->id === $order->user_id;
    }
}

API 控制器生成

声明被 API 消费的资源控制器时,通常你会排除输出 HTML 模板的路由,例如 create 和 edit,要生成不包含这些方法的资源控制器,可以在使用 Artisan 命令执行 make:controller 时使用 --api 开关:

php artisan make:controller API/PhotoController --api

模型序列化优化

在之前版本的 Laravel 中,队列中的模型在反序列化后不会带有完整的已加载关联关系。在 Laravel 5.6 中,模型上已加载的关联关系在队列任务被处理时会自动进行重新加载。

Eloquent 日期转化

现在你可以单独自定义 Eloquent 日期字段转化格式了,开始之前,需要在转化声明中指定目标日期格式。指定好之后,该格式就会在模型序列化为数组/JSON时使用:

protected $casts = [
    'birthday' => 'date:Y-m-d',
    'joined_at' => 'datetime:Y-m-d H:00',
];

Blade 组件别名

如果你的 Blade 组件存放在子目录中,现在起可以为它们起个别名以便使用。例如,假设一个 Blade 组件存放在 resources/views/components/alert.blade.php,你可以使用 component 方法将这个组件名从 components.alert 改为别名 alert

Blade::component('components.alert', 'alert');

组件起了别名之后,就可以使用别名来渲染:

@component('alert')
    You are not allowed to access this resource!
@endcomponent

或者,如果组件没有额外插槽,可以使用组件别名作为 Blade 指令:

@alert
    You are not allowed to access this resource!
@endalert

Argon2 密码哈希

如果你在构建一个基于 PHP 7.2.0+ 的应用,Laravel 现在可以支持通过 Argon2 算法进行密码哈希,默认的应用哈希驱动通过新增的 config/hashing.php 配置文件来控制。

UUID 方法

Laravel 5.6 引入了两个新的方法来生成 UUID:Str::uuid 和 Str::orderedUuidorderedUuid 方法会生成一个时间戳最靠前的UUID,通过诸如 MySQL 的数据库来索引,更简单,也更高效。两个方法都会返回 Ramsey\Uuid\Uuid对象:

use Illuminate\Support\Str;
return (string) Str::uuid();
return (string) Str::orderedUuid();

Collision

默认的 laravel/laravel 应用现在为 Collision 包含了一个 dev Composer 依赖,这个扩展包在通过命令行与 Laravel 应用交互时提供了美观的错误报告:

Bootstrap 4

所有前端脚手架例如用户登录认证模板和 Vue 示例组件都已经升级到 Bootstrap 4。默认情况下,生成的分页链接现在也已升级到 Bootstrap 4。

 

转载于:https://www.cnblogs.com/northsheng/p/10863633.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值