Laravel 5

最后更新于 作者:

Laravel 5 image

早在 9 月,Taylor Otwell 就表示 Laravel 4.3 将被重命名为 Laravel 5,以反映目录更改和其他有趣的举措。自那次公告以来,人们对 Laravel 5 的兴奋之情日益高涨,而“其他有趣的举措”则转变为近二十项新功能,旨在帮助开发人员提高工作效率。

一些人 推迟了升级,耐心地在旁边观望。其他人则直接投入,几个月来一直在使用开发分支,辛辛苦苦地查看提交内容,查找重大更改。

但这一切都将随着 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 的过程。我们都讨厌处理 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 Scheduler

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

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

以下是一个示例任务

$schedule->command('cache:clear')
->hourly()
->sendOutputTo($filePath)
->emailOutputTo('[email protected]');

当此功能发布时,它收到了很多褒贬不一的反应。我属于认为它很棒的那一派。我喜欢 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 转换为 bool 类型。选项将被存储为 json 并自动转换为数组。

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

Whoops 不再存在

Laravel 4 包含一个名为 Whoops 的错误处理程序。它已从 Laravel 5 中删除,但如果您想找回它,请参阅 将 Whoops 带回 Laravel 5

包和 Workbench

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 相关的所有其他内容。

2015 年将是 Laravel 世界激动人心的一年,我期待着与您保持联系!

Eric L. Barnes photo

Eric 是 Laravel News 的创建者,自 2012 年以来一直在报道 Laravel。

归档于
Cube

Laravel 新闻通讯

加入 40,000 多名其他开发者,不要错过任何新的提示、教程等。

Laravel Forge logo

Laravel Forge

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

Laravel Forge
Tinkerwell logo

Tinkerwell

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

Tinkerwell
No Compromises logo

不妥协

Joel 和 Aaron,来自 No Compromises 播客的两位经验丰富的开发者,现在可以为您的 Laravel 项目提供服务。 ⬧ 固定费率为每月 7500 美元。 ⬧ 没有冗长的销售流程。 ⬧ 没有合同。 ⬧ 100% 退款保证。

不妥协
Kirschbaum logo

Kirschbaum

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

Kirschbaum
Shift logo

Shift

正在运行旧版本的 Laravel 吗?即时、自动化的 Laravel 升级和代码现代化,以保持您的应用程序更新。

Shift
Bacancy logo

Bacancy

让您的项目充满活力,只需每月 2500 美元,就可以聘请一位拥有 4-6 年经验的经验丰富的 Laravel 开发人员。获得 160 小时的专门专业知识和 15 天的无风险试用。立即安排电话!

Bacancy
Lucky Media logo

Lucky Media

现在就来 Lucky - Laravel 开发的理想选择,拥有超过十年的经验!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar: Laravel 电子商务

Laravel 的电子商务。一个开源软件包,将现代无头电子商务功能的力量带到 Laravel。

Lunar: Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 工作板

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS 启动套件

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

SaaSykit: Laravel SaaS 启动套件
Rector logo

Rector

您无缝 Laravel 升级的合作伙伴,降低成本,并加速创新,以帮助企业取得成功

Rector
MongoDB logo

MongoDB

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

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

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

阅读文章
Add Swagger UI to Your Laravel Application image

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

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

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

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

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

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

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

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 包将评论添加到您的 Laravel 应用程序

阅读文章