Laravel 5

最后更新于 作者:

Laravel 5 image

早在 九月,Taylor Otwell 就表示 Laravel 4.3 将被重新命名为 Laravel 5,以反映目录更改和“其他有趣的功能”。自该公告发布以来,对 Laravel 5 的期待不断升温,而“其他有趣的功能”也变成了近二十项新特性,帮助开发者提高效率。

有些人 迟迟没有升级 ,耐心等待着。而其他人则跃跃欲试,几个月来一直在使用 develop 分支,仔细查看提交,寻找重大变更。

但这一切即将结束,因为 Laravel 刚刚宣布 Laravel 5 将在下周正式发布。

这三个词引发的热议不无道理。这个版本经过了数月的精心打造,终于准备与世人见面了。

Laravel 5 是一个重大升级,提供了许多新功能,但同时保留了使 Laravel 大获成功的核心功能。

实际上,新特性层出不穷,让人难以尽数。在这篇文章中,我将概述新特性,以及您在下周可以期待的内容。

Laravel 5 目录结构

第一个重大变化是目录结构。app 文件夹进行了重新设计,一些内容被移到了 app 文件夹之外。包括 config、database、storage 和 resources。

app 文件夹内部现在被进一步划分为以下文件夹:

  • Commands
  • Console
  • Events
  • Exceptions
  • Handlers
  • Http
  • Providers
  • Services

如果您熟悉之前版本的 Laravel,这可能会让您措手不及,但我保证您在使用两天后就能轻松理解和使用它。有关更多信息,请查看 Matt Stauffer 的 这篇文章

Blade 的变化

Blade 没有太多改进,但一项 Blade 改变 对于升级来说非常重要。

在 Laravel 4 中,Blade 包含以下两种样式:{{{{{。双花括号用于原始输出,三花括号用于转义。

现在,双花括号和三花括号都用于转义变量,而新的 {!! $var !!} 用于原始输出。

原始输出的一个常见用例是与表单助手一起使用。

{!! Form::open() !!}

契约

契约是一组接口,定义了框架提供的核心服务。从本质上来说,这相当于框架功能的文档。但它们的作用远不止此,您可以在 官方文档 中找到更多关于它们的信息以及它们如何提供帮助。

命令与事件

命令和事件都进行了改造。此功能在 文档 以及以下资源中都有详细介绍:

外观与助手

外观仍然存在于 Laravel 5 中,但新的助手函数开始取代一些最常用的功能。例如,在 Laravel 4 中,渲染视图需要使用以下代码:

View::make('path.to.view');

现在,只需使用一个简单的函数调用即可:

view('path.to.view');

其他一些助手函数包括:* abort() * action() * app() * app_path() * asset() * 路由 – get()、delete()、put() * back() * redirect() * response() * 等等…

路由

路由增加了两个新特性: 路由缓存 中间件

Matt 对这两个主题都进行了详细的讲解,我实在无话可说。请查看他的文章,深入了解这两个主题。

控制器方法注入

Laravel 4 支持控制器构造函数注入。现在,这一功能又向前迈进了一步,您可以在方法中指定任何依赖项的类型提示:

public function store(Request $request)

或者使用任何其他类型提示:

public function taxes(TaxCalculator $tax)

以下是一些深入了解的链接:

身份验证脚手架

默认的身份验证流程已经预先配置好,随时可以使用。启动所有这些功能比以往任何时候都容易。

这引入了两个新的特性:

  • AuthenticatesAndRegistersUsers
  • ResetsPasswords

最棒的是,您可以使用包含的特性,也可以覆盖特性方法中的任何内容,以自定义您的应用。

Socialite

Laravel Socialite 是一个可选的 Laravel 5.0 包,它简化了 OAuth 处理。这可是我们都讨厌的事情,对吧?目前,Socialite 支持 Facebook、Twitter、Google 和 GitHub。

官方文档 中包含有关实现和流程的更多信息。

Flysystem

下一个重大新特性是包含 Frank de Jonge 的 Flysystem 。如果您不熟悉这个包,它是一个文件系统抽象,允许您轻松地将本地文件系统替换为远程文件系统。

当前包含的适配器有:

  • Local
  • Amazon Web Services – S3
  • Rackspace Cloud Files

这意味着您能够轻松地将文件上传到这些服务中,并且比以往更容易使用外部存储。对于大多数应用来说,我认为这将是一个巨大的时间节省器。

dotenv – 环境检测

Vance Lucas 创建了一个名为 PHP dotenv 的 PHP 包,它可以从 .env 中加载环境变量到 getenv()、$_ENV$_SERVER 中,并自动执行。

Laravel 5 包含此包,以简化环境管理。您无需再编辑 bootstrap/start.php 并自定义 $app->detectEnvironment() 数组。

相反,您只需创建自己的 .env 文件,并根据需要对其进行自定义。然后,在任何配置文件中,您可以使用类似以下的代码:

'database' => env('DB_DATABASE’, 'myproddb'),

您还可以为不同的环境创建自定义文件,例如测试环境。实际上,Laracasts 已经提供了一个示例 behat 集成 ,它已经使用了此功能。

表单请求

表单验证和请求已经被讨论了很多,这是您一定听说过的一个领域。

基本上,身份验证和验证可以被转化为表单请求,并轻松注入。

有关此功能的更多信息,请查看以下两个资源:

Laravel Elixir

Elixir 是一个围绕 gulp 的全新封装,旨在简化资产处理。 无需费心构建自己的 CSS 和 JS 构建系统,您可以使用 Elixir,轻松完成设置并开始使用。

它默认支持您所需的大部分功能:Sass、Less、Coffeescript、JavaScript、文件版本控制以及其他诸多功能。

Laravel 调度器

Laravel 调度器 旨在简化需要通过 CRON 运行的任务。您只需设置一个调用 artisan schedule:run 的 cron 任务,并将其设置为每分钟执行一次。

设置好 cron 后,您可以以简洁友好的方式安排任何任务的运行时间。 它消除了记住 cron 调度方案的困扰,非常简单。 这些调度方案是在您的“app/Console/Commands”目录中创建的。

以下是一个示例任务

$schedule->command('cache:clear')
->hourly()
->sendOutputTo($filePath)
->emailOutputTo('john@doe.com');

此功能发布后,引发了各种褒贬不一的评价。 我认为这太棒了。 我喜欢 cron 任务被版本控制、在我的编辑器中易于查看,最重要的是,用纯英文编写。

$schedule->call('SomeClass@method')->dailyAt('10:00');

新 dd()

大家最喜欢的函数 dd(),即 dump and die(转储并退出),得到了重大改进。 Symfony 发布了 VarDumper 组件,Laravel 现在在幕后使用它。

VarDumper 组件提供遍历任何任意 PHP 变量的机制。 在其基础上,它提供了一个更好的 dump() 函数,您可以使用它来代替 var_dump。

非常有用,我很喜欢它为我们带来了多少额外的功能。 有关更多信息,请参见 Laravel dd 升级

Eloquent 属性转换

此功能得益于 Dayle Rees 的贡献。 属性转换 允许您将属性转换为其他数据类型。 例如,在您的模型中,添加一个 casts 属性

protected $casts = [
'is_admin' => 'boolean',
'options' => 'array',
];

这将自动将 is_admin 转换为布尔值。 选项将以 JSON 格式存储,并在输出时自动转换为数组。

当您使用 JavaScript 并且需要将它们匹配时,这非常有用。

Whoops 不再存在

Laravel 4 包含一个名为 Whoops 的错误处理程序。 现在已从 Laravel 5 中移除,但如果您想将其恢复,请参见 将 Whoops 还原到 Laravel 5

包和工作台

Laravel 包系统有一些重大变化。 最显著的变化是,现在已移除 Workbench,转而直接使用 Composer 包。

您可以在 官方文档 中找到有关这些具体更改的更多信息,以及 John in ‘t Hout 编写的教程 加载包视图/语言文件

Psysh

Tinker,用于测试您的代码的 CLI 工具,现在使用 Justin Hileman 编写的 Psysh

对于不熟悉 Psysh 的人来说,它是一款

用于 PHP 的运行时开发控制台、交互式调试器和 REPL(读入-求值-输出-循环)。

  • Psysh 功能强大,以下是部分功能
  • 在上下文中读取文档。 doc dd
  • list 命令了解您的所有代码(以及其他人的所有代码)。 轻松列出并搜索所有变量、常量、类、接口、特性、函数、方法和属性。
  • 轻松显示任何用户区对象、类、接口、特性、常量、方法或属性的源代码。
  • 捕获最后一个异常,可以通过 wtf 命令访问。

显示、搜索、保存和重放您的 shell 历史记录。

我相信它还有更多功能,并将成为您武器库中的一款强大工具。

SuperClosure

SuperClosure 是 Jeremy Lindblom 为序列化闭包和匿名函数而编写的库,也是一项新功能。 在幕后,它被 排队的闭包 使用。

新生成器

  • Artisan 现在功能更加强大,可以为您生成大量样板代码。 以下是当前可用的一些生成器
  • make:command — 创建一个新的命令类
  • make:console — 创建一个新的 Artisan 命令
  • make:controller — 创建一个新的资源控制器类
  • make:event — 创建一个新的事件类
  • make:middleware — 创建一个新的中间件类
  • make:migration — 创建一个新的迁移文件
  • make:model — 创建一个新的 Eloquent 模型类
  • make:provider — 创建一个新的服务提供程序类
  • make:request — 创建一个新的表单请求类

event:generate — 生成缺失的事件和处理程序

升级

升级不会像简单的 composer update 那样简单。 由于这是主要版本,您应该预期花费几个小时才能完成所有升级工作。 已经编写了两个指南来帮助您完成此过程。 官方文档 以及 Matt 的升级指南

接下来去哪里?

与任何框架一样,学习更多内容的最佳场所是官方文档。 之后,订阅 Laravel 时事通讯,它将让您及时了解最新的 Laravel 技巧和教程Laravel 包 以及与 Laravel 相关的其他所有内容。

Facebook Facebook
Cube

新闻

Laravel 时事通讯

Laravel Forge logo

查看全部 →

Laravel Forge

查看全部 →
Tinkerwell logo

轻松创建和管理您的服务器,并在几秒钟内部署 Laravel 应用程序。

Tinkerwell

轻松创建和管理您的服务器,并在几秒钟内部署 Laravel 应用程序。
No Compromises logo

Laravel 开发人员必备的代码运行器。 使用 AI、自动完成和本地和生产环境的即时反馈进行 Tinker。

No Compromises

Laravel 开发人员必备的代码运行器。 使用 AI、自动完成和本地和生产环境的即时反馈进行 Tinker。
Kirschbaum logo

来自 No Compromises 播客的两名经验丰富的开发人员 Joel 和 Aaron 现在可以为您的 Laravel 项目提供服务。 ⬧ 每月固定费用 7500 美元。 ⬧ 无需漫长的销售流程。 ⬧ 无需签订合同。 ⬧ 100% 退款保证。

Kirschbaum

来自 No Compromises 播客的两名经验丰富的开发人员 Joel 和 Aaron 现在可以为您的 Laravel 项目提供服务。 ⬧ 每月固定费用 7500 美元。 ⬧ 无需漫长的销售流程。 ⬧ 无需签订合同。 ⬧ 100% 退款保证。
Shift logo

提供创新和稳定性,确保您的 Web 应用程序成功。

Shift

提供创新和稳定性,确保您的 Web 应用程序成功。
Bacancy logo

运行旧版本的 Laravel? 即时、自动的 Laravel 升级和代码现代化,让您的应用程序保持最新状态。

Bacancy

运行旧版本的 Laravel? 即时、自动的 Laravel 升级和代码现代化,让您的应用程序保持最新状态。
Lucky Media logo

只需每月 2500 美元,即可让经验丰富的 Laravel 开发人员(拥有 4-6 年的经验)为您的项目增光添彩。 获得 160 小时的专业知识和 15 天的无风险试用。 立即安排电话会议!

Lucky Media

只需每月 2500 美元,即可让经验丰富的 Laravel 开发人员(拥有 4-6 年的经验)为您的项目增光添彩。 获得 160 小时的专业知识和 15 天的无风险试用。 立即安排电话会议!
Lunar: Laravel E-Commerce logo

立即获得好运 - 拥有十多年经验的 Laravel 开发的理想选择!

Lunar:Laravel 电子商务

立即获得好运 - 拥有十多年经验的 Laravel 开发的理想选择!
LaraJobs logo

Laravel 的电子商务。 一个开源软件包,将现代无头电子商务功能的强大功能带入 Laravel。

LaraJobs

Laravel 的电子商务。 一个开源软件包,将现代无头电子商务功能的强大功能带入 Laravel。
SaaSykit: Laravel SaaS Starter Kit logo

官方 Laravel 招聘网站

SaaSykit:Laravel SaaS 启动工具包

官方 Laravel 招聘网站
Rector logo

SaaSykit 是一个 Laravel SaaS 启动工具包,包含运行现代 SaaS 所需的所有功能。 支付、精美结账、管理面板、用户仪表板、身份验证、即用型组件、统计信息、博客、文档等等。

Rector

SaaSykit 是一个 Laravel SaaS 启动工具包,包含运行现代 SaaS 所需的所有功能。 支付、精美结账、管理面板、用户仪表板、身份验证、即用型组件、统计信息、博客、文档等等。
MongoDB logo

您无缝升级 Laravel、降低成本和加速创新的合作伙伴,为成功企业打造成功。

MongoDB

您无缝升级 Laravel、降低成本和加速创新的合作伙伴,为成功企业打造成功。

通过 MongoDB 和 Laravel 的强大集成,增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。 支持事务性、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。 了解 MongoDB 的灵活、现代数据库如何改变您的 Laravel 应用程序。

合作伙伴
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

将 Swagger UI 添加到您的 Laravel 应用程序

Maska 是一个简单的无依赖性输入掩码库
Build SSH Apps with PHP and Laravel Prompts image

在 Laravel 11.19 中断言响应的精确 JSON 结构

Maska 是一个简单的无依赖性输入掩码库
Building fast, fuzzy site search with Laravel and Typesense image

使用 PHP 和 Laravel 提示构建 SSH 应用程序

Maska 是一个简单的无依赖性输入掩码库
Add Comments to your Laravel Application with the Commenter Package image

使用 Laravel 和 Typesense 构建快速、模糊的网站搜索

Maska 是一个简单的无依赖性输入掩码库