Laravel Laravel
  • 前言

    • 发行说明
    • 升级向导
    • 贡献导引
    • API 文档
  • 入门指南

    • 安装
    • 配置
    • 文件夹结构
    • Homestead
    • Valet
    • 部署
  • 架构思想

    • 请求生命周期
    • 服务容器
    • 服务提供者
    • Facades:门面
    • Contracts:契约
  • 基础功能

    • 路由
    • 中间件
    • CSRF 保护
    • 控制器
    • 请求
    • 响应
    • 视图
    • URL 生成
    • Session
    • 表单验证
    • 错误处理
    • 日志
  • 前端开发

    • Blade 模板
    • 本地化
    • 前端脚手架
    • 编译资源
  • 安全

    • 身份认证
    • API 身份认证
    • 授权
    • 加密
    • 哈希
    • 重置密码
  • 深入话题

    • Artisan 命令行
    • 广播
    • 缓存
    • 集合
    • 事件
    • 文件存储
    • 辅助函数
    • Mail
    • 消息通知
    • 扩展包开发
    • 队列
    • 任务调度
  • 数据库

    • 快速入门
    • 查询构造器
    • 分页
    • 数据库迁移
    • 数据填充
    • Redis
  • Eloquent ORM

    • 快速入门
    • 关联关系
    • Eloquent 集合
    • 修改器
    • API 资源
    • 序列化
  • 测试

    • 快速入门
    • HTTP 测试
    • 浏览器测试
    • 数据库测试
    • 测试模拟器Mocking
  • 官方扩展包

    • Cashier
    • Envoy部署工具
    • Horizon队列管理工具
    • Passport OAuth 认证
    • Scout全文搜索
    • Socialite社会化登录
Icon

提示 您正在浏览旧版本的 Laravel 的文档. 请考虑将你的项目升级到 Laravel 11.x.

23 1

发行说明
5.6
8.x 7.x 6.x 5.8 5.7 5.6 5.5 5.4 5.3 5.2 5.1

Laravel 5.6 中文文档 /

未匹配的标注
本文档最新版为 8.x,旧版本可能放弃维护,推荐阅读最新版!

发行说明

  • 版本控制方案
  • 支持策略
  • Laravel 5.6

版本控制方案

Laravel 的版本控制方案使用以下约定:主版本号.次版本号.修订号。次版本号框架每六个月(二月和八月)发布,而修订号版本可能每周发布一次,而修订号版本不包含重大更改。

你从应用程序中或在包中引用 Laravel 框架或其他组件时,应该始终使用版本约束,例如 5.5.*,因为 Laravel 的次要版本包含重大更改。但是,我们会努力确保你可以在一天或更短时间内完成更新。

主版本之间的发布往往需要很多年,每次发布代表框架架构和底层结构发生了根本的改变。而目前并没有准备开发主版本号的计划。

支持策略

对于 LTS 版本,例如 Laravel 5.1,提供两年的错误修复和三年的安全修复。这些版本提供最长时间的支持和维护。对于一般版本,则只是提供六个月的错误修复和为期一年的安全修复。

Laravel 5.6

Laravel 5.6 继续在 Laravel 5.5 的基础上进行持续改进,改进有添加了一个改良的日志系统,单机任务调度系统,对模型序列化进行改进,动态的速率限制,广播频道类添加,可生成 API 资源控制器,Eloquent 日期格式改进,Blade 组件别名,Argon2 密码哈希支持,加入 Collision 包,以及更多。除此之外全部前端脚手架已经升级为 Bootstrap 4。

所有 Laravel 使用的 Symfony 组件已经升级到 Symfony ~4.0 release 系列。

此次发布 Laravel 5.6 的同时也发布了 Spark 6.0,这是 Laravel Spark 的一次重大升级,Spark 6.0 为 Stripe 和 Braintree 引入了按座定价功能,以及本地化、Bootstrap 4、增强 UI 和 Stripe Elements 支持。

{tip} 这个文档总结了那些对框架来说最显著和值得注意的改进;更加详尽的改进可以查阅 on GitHub.

Logging 改进

Laravel 5.6 对日志系统做出了巨大的改进,所有日志的配置都放置在一个新的 config/logging.php 配置文件中,你可以轻松的构建日志「栈」然后发送日志消息到多个处理器,例如,你可以发送所有的 debug 级别的日志消息到系统日志,同时将 error 级别的日志消息发送到 Slack ,以便让团队成员更快速的对系统的错误做出反应:

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

此外,使用日志系统的新「tap」功能,现在能更容易的自定义已存在的日志频道,更多详情可以查看 完整的日志系统文档.

单机任务调度

{note} 要使用这个新特性,必须使用memcached 或 redis 缓存驱动作为你应用程序的默认缓存驱动。另外,所有的服务器必须与同一个中心缓存服务器通信。

如果你的应用程序运行在多个服务器上,现在你可以限定只在一台机器上运行计划任务。 例如,假设你有一个每周五晚上生成新报告的计划任务。如果计划任务是运行在三个服务器上,这个计划任务就会运行在三个服务器上并生成同样的报告三次,这样非常糟糕!

为了让计划任务只运行在一个服务器上,可以在定义计划任务时使用 onOneServer 方法。 第一个服务器获得任务将会给任务添加一个原子锁,阻止其他的服务器在相同的计划周期运行同样的计划任务:

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

动态频率限制

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

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

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

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

广播频道类

如果你的应用正在消费多个频道,那么你的 routes/channels.php 将会越来越臃肿。所以你可以使用频道类代替闭包来授权频道。可以使用 make:channel Artisan 命令来创建频道类。这个命令会将新创建的类放到 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
{
    /**
     * 创建一个频道实例
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * 授权用户在频道上的操作。
     *
     * @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 生成控制器时,你会希望生成的控制器类里不包含 create 和 edit 方法,因为他们在资源控制器的定义里,是返回 HTML 内容的。在 Laravel 新版本里,你只需要在执行 make:controller 时指定参数 --api 即可移除这两个方法:

php artisan make:controller API/PhotoController --api

Model 模型序列化增强

在之前的版本中,当在队列中使用模型数据时,模型关联的数据是不会被直接加载的。在 Laravel 5.6 里,只要你请求队列时提前加载了模型关联数据,在队列执行时,这些关联数据会被自动加载。

Eloquent 日期格式指定

现在你可以为 Eloquent 的日期字段指定专属的 日期格式 了。字段指定日期格式以后,序列号 / JSON 都会返回格式化后的数据:

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

Blade 组件别名

如果你的 Blade 组件存储在子目录中,现在可以给它们起一个别名以方便访问。例如,想象存储在 resources/views/components/alert.blade.php 目录下的Blade 组件, 你可以使用 component 方法将 components.alert 组件别名为 alert:

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

一旦组件被别名,你可以使用一个指令来渲染它:

@alert('alert', ['type' => 'danger'])
    You are not allowed to access this resource!
@endalert

如果没有附加插槽,您可以省略组件参数:

@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::orderedUuid。 orderedUuid 方法将生成一个时间戳的第一个 UUID,它可以通过 MySQL 等数据库更容易和有效地索引。 每个方法都会返回一个 Ramsey\Uuid\Uuid 对象 :

use Illuminate\Support\Str;

return (string) Str::uuid();

return (string) Str::orderedUuid();

Collision

现在,默认的 laravel/laravel 应用包含了由 Nuno Maduro 维护的 Collision 的 dev Composer 第三方依赖包,当我们在命令行中与 Laravel 应用进行交互时,它会提供美观的错误报告信息:

example.png

Bootstrap 4

所有的前端脚手架,例如身份验证样板文件和示例 Vue 组件都已经升级到了
Bootstrap 4。默认情况下,分页链接生成的样式也默认采用了 Bootstrap 4。

本文章首发在 网站上。


上一篇 下一篇

成为Laravel合作伙伴

Laravel Partners是提供一流Laravel开发和咨询服务的精英商店。我们每个合作伙伴都可以帮助您制定一个精美,结构完善的项目.

我们的伙伴
Laravel
亮点
  • Our Team
  • 发布说明
  • 入门
  • 路由
  • Blade 模板
  • 身份验证
  • 用户授权
  • Artisan 控制台
  • 数据库
  • Eloquent ORM
  • 测试
资源
  • Laravel Bootcamp
  • Laracasts
  • Laravel News
  • Laracon
  • Laracon EU
  • Laracon India
  • Jobs
  • Forums
  • Trademark
  • 版本发布时间
  • 包开发
  • 命令行应用
  • TALL stack全栈开发
  • Blade UI Kit
  • 前端资源构建
伙伴
  • WebReinvent
  • Vehikl
  • Tighten
  • 64 Robots
  • Active Logic
  • Byte 5
  • Curotec
  • Cyber-Duck
  • DevSquad
  • Jump24
  • Kirschbaum
生态系统
  • Cashier
  • Dusk
  • Echo
  • Envoyer
  • Forge
  • Horizon
  • Nova
  • Octane
  • Sail
  • Sanctum
  • Scout
  • Spark
  • Telescope
  • Valet
  • Vapor

Laravel是一个具有表达力,优雅语法的Web应用程序框架。我们认为,发展必须是一种令人愉悦的创造力,才能真正实现。Laravel试图通过减轻大多数Web项目中使用的常见任务来减轻开发的痛苦.

Laravel是Taylor Otwell的商标.
Copyright © 2011-2025 Laravel中文网 LLC.

  • Twitter
  • GitHub
  • Discord
Laravel 全栈开发网 推荐使用阿里云 按Ctrl+D试试