Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit ce55497

Browse files
committedSep 3, 2016
release
1 parent 8d6d931 commit ce55497

File tree

1 file changed

+143
-98
lines changed

1 file changed

+143
-98
lines changed
 

‎releases.md

Lines changed: 143 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -277,49 +277,64 @@ API 相关的路由在 `RouteServiceProvider` 中指定了自动添加 `api` 前
277277

278278
更多信息请查看 [Blade 文档](/docs/5.3/blade#the-loop-variable).
279279

280+
280281
<a name="laravel-5.2"></a>
281282
## Laravel 5.2
282283

283-
Laravel 5.2 continues the improvements made in Laravel 5.1 by adding multiple authentication driver support, implicit model binding, simplified Eloquent global scopes, opt-in authentication scaffolding, middleware groups, rate limiting middleware, array validation improvements, and more.
284+
Laravel 5.2 在 Laravel 5.1 的基础上进行了优化,新特性包括以下:
285+
286+
* 支持更多样的用户认证驱动;
287+
* 隐式数据模型绑定;
288+
* 简化 Eloquent 全局作用域;
289+
* 内置用户认证脚手架支持;
290+
* 中间件组;
291+
* 访问频率限制中间件;
292+
* 数组认证的优化等
293+
294+
### 用户认证驱动 / "多认证系统"
284295

285-
### Authentication Drivers / "Multi-Auth"
296+
在之前的 Laravel 版本中,框架只支持默认的、基于 session 的认证驱动,且在单个应用中只能拥有一个认证模型类。
286297

287-
In previous versions of Laravel, only the default, session-based authentication driver was supported out of the box, and you could not have more than one authenticatable model instance per application.
298+
Laravel 5.2 对此进行了改进,你可以定义多个认证驱动,还支持多个可认证的数据模型以及用户表,并且可以独立控制其认证。
288299

289-
However, in Laravel 5.2, you may define additional authentication drivers as well define multiple authenticatable models or user tables, and control their authentication process separately from each other. For example, if your application has one database table for "admin" users and one database table for "student" users, you may now use the `Auth` methods to authenticate against each of these tables separately.
300+
如果你的应用包含 `管理员用户数据表` 和一个 `学生用户数据表`,现在你可以使用 `Auth` 来实现管理员用户和学生用户的独立登录而互不影响。
290301

291-
### Authentication Scaffolding
302+
### 用户认证脚手架
292303

293-
Laravel already makes it easy to handle authentication on the back-end; however, Laravel 5.2 provides a convenient, lightning-fast way to scaffold the authentication views for your front-end. Simply execute the `make:auth` command on your terminal:
304+
Laravel 不止提供服务器端的用户认证逻辑代码,Laravel 5.2 还提供了便捷的方式来创建认证视图,只需在终端执行下 `make:auth` 命令即可:
294305

295306
php artisan make:auth
296307

297-
This command will generate plain, Bootstrap compatible views for user login, registration, and password reset. The command will also update your routes file with the appropriate routes.
308+
该命令会生成纯文本、兼容 Bootstrap 样式,用于登录、注册和密码重置的视图。该命令还会顺带在路由文件中增加对应的授权路由。
298309

299-
> {note} This feature is only meant to be used on new applications, not during application upgrades.
310+
> **注意**:该功能特性只能在新应用中使用,不能在应用升级过程中使用。
300311
301-
### Implicit Model Binding
312+
### 隐式数据模型绑定
302313

303-
Implicit model binding makes it painless to inject relevant models directly into your routes and controllers. For example, assume you have a route defined like the following:
314+
隐式模型绑定使得在路由和控制器中注入模型实例更加便捷。假设你有一个路由定义如下:
304315

305316
use App\User;
306317

307318
Route::get('/user/{user}', function (User $user) {
308319
return $user;
309320
});
310321

311-
In Laravel 5.1, you would typically need to use the `Route::model` method to instruct Laravel to inject the `App\User` instance that matches the `{user}` parameter in your route definition. However, in Laravel 5.2, the framework will **automatically** inject this model based on the URI segment, allowing you to quickly gain access to the model instances you need.
322+
Laravel 5.1 中,你需要通过 `Route::model` 方法指示 Laravel 注入 `App\User` 实例来匹配路由中的 `{user}` 参数。
323+
324+
现在,在 Laravel 5.2 中,框架将会基于相应 URI 判断 **自动** 注入模型,从而允许你快速访问需要的模型实例。
325+
326+
如路由参数片段 `{user}` 匹配到 `路由闭包``控制器方法` 中对应参数 `$user`,且类型提示为 Eloquent 数据模型的话,Laravel 将会自动注入该模型。
312327

313-
Laravel will automatically inject the model when the route parameter segment (`{user}`) matches the route Closure or controller method's corresponding variable name (`$user`) and the variable is type-hinting an Eloquent model class.
328+
更多隐式模型绑定信息,请查看 [HTTP 路由模型绑定部分](/docs/{{version}}/routing#Route-Model-Binding)
314329

315-
### Middleware Groups
330+
### 中间件组
316331

317-
Middleware groups allow you to group several route middleware under a single, convenient key, allowing you to assign several middleware to a route at once. For example, this can be useful when building a web UI and an API within the same application. You may group the session and CSRF routes into a `web` group, and perhaps the rate limiter in the `api` group.
332+
中间件组允许你使用单个 `` 对相关路由中间件进行分组,从而实现为某个路由一次性指定多个中间件。例如,在同一个应用中同时构建 Web UI API 时,这一特性就会派上用场,你可以将 Session 和 CSRF 路由分组到一个 `web` 组,或者将访问频率限制分组到 `api` 组中。
318333

319-
In fact, the default Laravel 5.2 application structure takes exactly this approach. For example, in the default `App\Http\Kernel.php` file you will find the following:
334+
实际上,默认的 Laravel 5.2 应用结构采用的正是这个方法。例如,在默认的 `App\Http\Kernel.php` 文件中你会看到如下:
320335

321336
/**
322-
* The application's route middleware groups.
337+
* 应用程序的中间件分组
323338
*
324339
* @var array
325340
*/
@@ -337,72 +352,65 @@ In fact, the default Laravel 5.2 application structure takes exactly this approa
337352
],
338353
];
339354

340-
Then, the `web` group may be assigned to routes like so:
355+
然后,`web` 组可以这样指定给路由:
341356

342357
Route::group(['middleware' => ['web']], function () {
343358
//
344359
});
345360

346-
However, keep in mind the `web` middleware group is *already* applied to your routes by default since the `RouteServiceProvider` includes it in the default middleware group.
361+
默认的,所有的 `app/Http/routes.php` 中的路由 **已经**`RouteServiceProvider` `mapWebRoutes` 方法中指定了 `web` 中间件组,所以你不必重复指定。
347362

348-
### Rate Limiting
363+
### 访问频率限制
349364

350-
A new rate limiter middleware is now included with the framework, allowing you to easily limit the number of requests that a given IP address can make to a route over a specified number of minutes. For example, to limit a route to 60 requests every minute from a single IP address, you may do the following:
365+
框架现在内置了一个新的访问频率限制中间件,允许你轻松控制给定 IP 地址在指定时间内对某个路由发起请求的数目。
366+
367+
例如,要限制某个 IP 地址每分钟只能访问某个路由 60 次,你可以这么做:
351368

352369
Route::get('/api/users', ['middleware' => 'throttle:60,1', function () {
353370
//
354371
}]);
355372

356-
### Array Validation
373+
### 数组输入验证
357374

358-
Validating array form input fields is much easier in Laravel 5.2. For example, to validate that each e-mail in a given array input field is unique, you may do the following:
375+
Laravel 5.2 可轻松实现表单字段的数组输入验证。例如,要验证指定数组输入字段中的每一个 email 是否唯一,可以这么做:
359376

360377
$validator = Validator::make($request->all(), [
361378
'person.*.email' => 'email|unique:users'
362379
]);
363380

364-
Likewise, you may use the `*` character when specifying your validation messages in your language files, making it a breeze to use a single validation message for array based fields:
381+
你可以使用 `*` 来自定义验证数组字段的错误消息提醒:
365382

366383
'custom' => [
367384
'person.*.email' => [
368-
'unique' => 'Each person must have a unique e-mail address',
385+
'unique' => '用户的 Email 必须是唯一的',
369386
]
370387
],
371388

372-
### Bail Validation Rule
389+
### `bail` 验证规则
373390

374-
A new `bail` validation rule has been added, which instructs the validator to stop validating after the first validation failure for a given rule. For example, you may now prevent the validator from running a `unique` check if an attribute fails an `integer` check:
391+
Laravel 5.2 新添加了一个 `bail` 认证规则,此规则会在第一个失败认证后停止后面的其他认证检查。例如:你想在 `integer` 数值检查失败后停止对 `unique` 唯一性的检查:
375392

376393
$this->validate($request, [
377394
'user_id' => 'bail|integer|unique:users'
378395
]);
379396

380-
### Eloquent Global Scope Improvements
381-
382-
In previous versions of Laravel, global Eloquent scopes were complicated and error-prone to implement; however, in Laravel 5.2, global query scopes only require you to implement a single, simple method: `apply`.
397+
### Eloquent 全局作用域优化
383398

384-
For more information on writing global scopes, check out the full [Eloquent documentation](/docs/{{version}}/eloquent#global-scopes).
385-
386-
<a name="support-policy"></a>
387-
## 发行说明
399+
在之前的 Laravel 版本中,Eloquent 全局作用域的实现复杂且容易出错,但在 Laravel 5.2 中,全局查询作用域只需实现一个简单的 `apply` 方法即可。
388400

389-
Laravel 5.1 LTS 版本会提供两年的 BUG 修复及三年的安全性修复,LTS 版本是 Laravel 能提供的支持及维护最长时间支持的发行版。
390-
391-
对于一般的版本,会提供六个月的 BUG 修复及一年的安全性修复。
392-
393-
> [Laravel 的发布路线图](https://phphub.org/topics/2594) - by [Summer](http://github.com/summerblue)
401+
更多关于全局作用域的使用,请查阅 [Eloquent 文档](/docs/{{version}}/eloquent#global-scopes).
394402

395403
<a name="laravel-5.1.11"></a>
396404
## Laravel 5.1.11
397405

398-
Laravel 5.1.11 推出了内置的 [授权](/docs/{{version}}/authorization) 支持!利用回调和授权策略类,更方便的组织应用程序的授权逻辑
406+
Laravel 5.1.11 推出了内置的 [授权](/docs/{{version}}/authorization) 功能!利用回调和授权策略类,能更方便的组织应用程序的授权逻辑
399407

400408
更多的信息请参考 [授权的文档](/docs/{{version}}/authorization)
401409

402410
<a name="laravel-5.1.4"></a>
403411
## Laravel 5.1.4
404412

405-
Laravel 5.1.4 为框架推出了简单的登录限制。查阅 [认证的文档](/docs/{{version}}/authentication#authentication-throttling) 以获取更多信息。
413+
Laravel 5.1.4 增加了简单的登录限制功能。查阅 [认证的文档](/docs/{{version}}/authentication#authentication-throttling) 以获取更多信息。
406414

407415
<a name="laravel-5.1"></a>
408416
## Laravel 5.1
@@ -418,31 +426,31 @@ Laravel 5.1 由 Laravel 5.0 改进而成,变更包括但是不限于:
418426

419427
由于 PHP 5.4 将在九月「结束寿命」,PHP 开发团队不再提供安全性更新,所以 Laravel 要求 PHP 5.5.9 或更高的版本。
420428

421-
PHP 5.5.9 也是最新版本的 PHP 函数库,像是 Guzzle 及 AWS SDK 需要的最小版本需要。
429+
PHP 5.5.9 同时也是最新版本的 PHP 函数库,像是 Guzzle 及 AWS SDK 需要的最小版本需要。
422430

423431
### LTS
424432

425-
Laravel 5.1 是 Laravel 生态系统内 **长期支持** 的第一个版本。Laravel 5.1 会获得两年的 BUG 修复及三年的安全性修复,此策略也使 Laravel 能更好的服务于较大型的企业客户及消费者。
433+
Laravel 5.1 是 Laravel 生态系统中第一个 **长期支持** 版本。Laravel 5.1 会获得两年的 BUG 修复及三年的安全性修复,此策略也使 Laravel 能更好的服务于较大型的企业客户及消费者。
426434

427435
### PSR-2
428436

429-
[PSR-2 代码风格指南](https://phphub.org/topics/2079) 已经被 Laravel 框架采用为默认的代码风格指南。此外,所以的生成器都已进行更新,以生成 PSR-2 兼容的语法
437+
[PSR-2 代码风格指南](https://phphub.org/topics/2079) 已经被 Laravel 框架采用为默认的代码风格指南。此外,所有的生成器都已进行更新,生成的文件将兼容 PSR-2 规范
430438

431439
### 文档
432440

433441
Laravel 文档的每一页已被精心审阅,并得到显著的改善。所有的代码例子也进行了严密检查,使其有更高的上下文关联性。
434442

435443
### 事件广播
436444

437-
WebSockets 技术越来越多的被应用在现代 Web 应用程序中,当服务器上一些数据更新,WebSocket 会实时发送一个消息给客户端,实现即时更新用户状态功能。
445+
WebSockets 技术越来越多的被现代 Web 应用使用,当服务器上一些数据更新,WebSocket 会实时发送一个消息给客户端,实现即时更新用户状态功能。
438446

439447
Laravel 的事件广播机制很好的支持了此类应用的开发,广播事件允许服务器端代码和 JavaScript 框架间分享相同的事件名称。
440448

441449
了解更多关于事件广播,请查阅 [事件的文档](/docs/{{version}}/events#broadcasting-events)
442450

443451
### 中间件参数
444452

445-
中间件支持接收自定义传参,例如要在运行特定操作之前,检查当前登录的用户是否具备「某角色」,可以创建 `RoleMiddleware` 来接收角色名称作为额外的传参
453+
中间件支持接收自定义传参,例如要在运行特定操作之前,检查当前登录的用户是否具备「某角色」,可以创建 `RoleMiddleware` 来接收角色名称作为传参
446454

447455
<?php
448456

@@ -471,7 +479,7 @@ Laravel 的事件广播机制很好的支持了此类应用的开发,广播事
471479

472480
}
473481

474-
在路由中可使用冒号 `:` 来区隔中间件名称与指派参数,多个参数可使用逗号作为分隔:
482+
在路由中使用冒号 `:` 来区隔中间件名称与参数,多个参数可使用逗号作为分隔:
475483

476484
Route::put('post/{id}', ['middleware' => 'role:editor', function ($id) {
477485
//
@@ -481,7 +489,9 @@ Laravel 的事件广播机制很好的支持了此类应用的开发,广播事
481489

482490
### 测试改进
483491

484-
Laravel 内置的测试功能已得到显著的改善,提供简明的接口与应用程序进行交互和检查响应。例如下方的测试:
492+
Laravel 内置的测试功能已得到显著的改善,新版本提供了简明的接口与应用程序进行交互,响应检查也变得更加轻松。
493+
494+
例如下方的测试:
485495

486496
public function testNewUserRegistration()
487497
{
@@ -496,10 +506,11 @@ Laravel 内置的测试功能已得到显著的改善,提供简明的接口与
496506

497507
### 模型工厂
498508

499-
Laravel 的 [模型工厂](/docs/{{version}}/testing#model-factories) 提供一种简单的方式创建仿真 Eloquent 模型。
509+
Laravel 的 [模型工厂](/docs/{{version}}/testing#model-factories) 提供一种简单的方式来创建仿真 Eloquent 模型。
510+
511+
在为 Eloquent 模型定义一组「默认」填充字段后,即可为测试,或者数据填充生成测试模型实例。
500512

501-
>>>>
502-
模型工厂通过简单的为 Eloquent 模型定义一组「默认」填充字段,令其为测试或数据填充生成测试模型实例。另外,模型工厂支持使用 [Faker](https://github.com/fzaninotto/Faker) 来生成随机字段的数据:
513+
另外,模型工厂支持使用 [Faker](https://github.com/fzaninotto/Faker) 来生成随机数据:
503514

504515
$factory->define(App\User::class, function ($faker) {
505516
return [
@@ -510,11 +521,13 @@ Laravel 的 [模型工厂](/docs/{{version}}/testing#model-factories) 提供一
510521
];
511522
});
512523

513-
更多关于模型工厂的消息,请查阅 [它的文档](/docs/{{version}}/testing#model-factories)
524+
更多关于模型工厂的信息,请查阅 [它的文档](/docs/{{version}}/testing#model-factories)
514525

515526
### Artisan 的改进
516527

517-
Artisan 命令现在可以使用简单的方式定义,类似于命名路由,提供了一个非常简单的接口来定义命令行的参数及选项。举个例子,你可以定义一个简单的命令及它的选项,如下:
528+
Artisan 命令现支持类似于命名路由的定义,以简单易懂的形式来定义命令行的参数及选项。
529+
530+
举个例子,你可以定义一个简单的命令及它的参数和选项,如下:
518531

519532
/**
520533
* 命令行的名字及署名。
@@ -527,16 +540,20 @@ Artisan 命令现在可以使用简单的方式定义,类似于命名路由,
527540

528541
### 文件夹结构
529542

530-
为了更方便理解,`app/Commands` 目录已经被更名为 `app/Jobs`。此外,`app/Handler` 目录已经被合并成一个只包含事件侦听器的 `app/Listeners` 目录中。这不是一个重大的改变,你不必更新成新的文件夹结构也能使用 Laravel 5.1。
543+
为了更方便理解,`app/Commands` 目录已经被更名为 `app/Jobs`
544+
545+
此外,`app/Handler` 目录已经被合并成一个只包含事件侦听器的 `app/Listeners` 目录中。
546+
547+
这不是一个重大的改变,你不必更新成新的文件夹结构也能使用 Laravel 5.1。
531548

532549
### 加密
533550

534-
在 Laravel 之前的版本,加密是通过 `mcrypt` PHP 扩展功能进行处理。不过,从 Laravel 5.1 起,加密通过更积极维护的 `openssl` 扩展功能进行处理
551+
在 Laravel 之前的版本,加密是通过 `mcrypt` PHP 扩展进行处理。不过,从 Laravel 5.1 起,加密将采用更积极维护的 `openssl` 扩展进行处理
535552

536553
<a name="laravel-5.0"></a>
537554
## Laravel 5.0
538555

539-
Laravel 5.0 在默认的项目上引进了新的应用程序架构。新架构允许 Laravel 创建更加强健的应用程序,新架构全面采用新的自动加载标准(PSR-4)。
556+
Laravel 5.0 引进了新的应用程序架构。新架构允许 Laravel 创建更加健壮的应用程序,新架构全面采用新的自动加载标准(PSR-4)。
540557

541558
以下是一些主要变化:
542559

@@ -546,21 +563,23 @@ Laravel 5.0 在默认的项目上引进了新的应用程序架构。新架构
546563

547564
默认情况下使用 `App` 命名空间。可以使用 `app:name` Artisan 命令对默认命名空间进行修改。
548565

549-
控制器、中间件,以及表单请求(Laravel 5.0 中新型态的类),现在分门别类的放在 `app/Http` 目录下,因为他们都与应用程序的 HTTP 传输层相关。除了一个路由设置的文件外,所有中间件现都分开为独自的类文件。
566+
控制器、中间件,以及表单请求(Laravel 5.0 中新型态的类),分门别类的放在 `app/Http` 目录下,因为他们都与应用程序的 HTTP 传输层相关。除了一个路由设置的文件外,所有中间件现都分开为独自的类文件。
550567

551-
`app/Providers` 目录取代了旧版 Laravel 4.x `app/start` 里的文件。这些服务提供者为应用程序提供了各种引导功能,像是错误处理,日志纪录,路由加载等等。当然,你可以任意的创建新的服务提供者到应用程序中
568+
`app/Providers` 目录取代了旧版 Laravel 4.x `app/start` 里的文件。这些服务提供者为应用程序提供了各种引导功能,像是错误处理,日志纪录,路由加载等等。当然,你可以任意的创建新的服务提供者
552569

553570
应用程序的语言文件和视图都被移到 `resources` 目录下。
554571

555572
### Contracts
556573

557-
所有 Laravel 主要组件实现所用的接口都放在 `illuminate/contracts` 保存库中。这个保存库没有其它的外部依赖。这些方便、集成的接口,可以让你用来让依赖注入变得低耦合,将可以简单作为 Laravel Facades 的替代选项。
574+
所有 Laravel 组件实现所用的接口都放在 `illuminate/contracts` 文件夹中,他们没有其他依赖。这些方便集成的接口,让依赖注入变得低耦合,可简单作为 Laravel Facades 的替代选项。
558575

559576
更多关于 contracts 的信息,参考 [完整文档](/docs/{{version}}/contracts)
560577

561578
### 路由缓存
562579

563-
如果你的应用程序全部都是使用控制器路由,你可以使用新的 `route:cache` Artisan 命令来大幅度地加快注册路由。这对于有 100 个以上路由规则的应用程序很有用,可以**大幅度地**加快应用程序这部分的处理速度。
580+
如果你的应用程序全部使用控制器路由,新的 `route:cache` Artisan 命令可大幅度地优化路由注册寻找速度。
581+
582+
这对于拥有 100 个以上路由规则的应用程序来说很有用,可以 **大幅度地** 加快应用程序路由部分的处理速度。
564583

565584
### 路由中间件
566585

@@ -570,7 +589,7 @@ Laravel 5.0 在默认的项目上引进了新的应用程序架构。新架构
570589

571590
### 控制器方法注入
572591

573-
除了之前有的建构函数注入外,你现在可以在控制器方法使用类型提示进行依赖注入[服务容器](/docs/{{version}}/container) 会自动注入依赖,即使路由包含了其它参数也不成问题:
592+
除了之前有的类的构造函数注入外,你现在可以在控制器方法中使用依赖注入[服务容器](/docs/{{version}}/container) 会自动注入依赖,即使路由包含了其它参数也不成问题:
574593

575594
public function createPost(Request $request, PostRepository $posts)
576595
{
@@ -579,11 +598,18 @@ Laravel 5.0 在默认的项目上引进了新的应用程序架构。新架构
579598

580599
### 认证基本架构
581600

582-
用户注册,认证,以及重设密码的控制器现在已经默认含括了,包含相对应的视图,放在 `resources/views/auth`。除此之外,「users」数据表迁移也已经默认存在框架中了。这些简单的资源,可以让你快速开发应用程序的点子,而不用陷在编写认证模板的泥淖上。认证相关的视图可以经由 `auth/login` 以及 `auth/register` 路由访问。`App\Services\Auth\Registrar` 服务会负责处理用户认证和添加的相关逻辑。
601+
认证系统默认包含了用户注册,认证,以及重设密码的控制器,还有对应的视图,视图文件存放在 `resources/views/auth`
602+
603+
除此之外,「users」数据表迁移也默认包含在框架中。这些简单的资源,可以让你把心思放在产品开发上,而不用陷在编写认证模板的泥潭。
604+
605+
认证相关的视图可以通过 `auth/login` 以及 `auth/register` 路由访问。
606+
607+
`App\Services\Auth\Registrar` 会负责处理用户认证和注册用户的相关逻辑。
583608

584609
### 事件对象
585610

586-
你现在可以将事件定义成对象,而不是仅使用字符串。例如,瞧瞧以下的事件:
611+
你现在可以将事件定义成对象,而不是仅使用字符串。例:
612+
587613
<?php
588614

589615
class PodcastWasPurchased
@@ -616,7 +642,7 @@ Laravel 5.0 在默认的项目上引进了新的应用程序架构。新架构
616642

617643
### 命令及队列
618644

619-
除了 Laravel 4 形式的队列任务,Laravel 5 以简单的命令对象作为队列任务。这些命令放在 `app/Commands` 目录下。下面是个例子的命令:
645+
除了 Laravel 4 形式的队列任务,Laravel 5 还支持命令对象直接作为队列任务。这些命令放在 `app/Commands` 目录下。下面是个例子的命令:
620646

621647
<?php
622648

@@ -651,45 +677,53 @@ Laravel 5.0 在默认的项目上引进了新的应用程序架构。新架构
651677
}
652678
}
653679

654-
Laravel 的基底控制器使用了新的 `DispatchesCommands` trait,让你可以简单的派发命令运行
680+
Laravel 的基底控制器使用了新的 `DispatchesCommands` trait,让你可以简单的派发命令运行
655681

656682
$this->dispatch(new PurchasePodcastCommand($user, $podcast));
657683

658-
当然,你也可以将命令视为同步运行(而不会被放到队列里)的任务。事实上,使用命令是个好方式,让你可以封装应用程序需要运行的复杂任务。更多相关的信息,参考 [command bus](/docs/{{version}}/bus) 文档。
684+
当然,你也可以将命令视为同步运行(而不会被放到队列里)的任务。事实上,「命令总线」是个不错的设计模式,可以封装应用程序需要运行的复杂任务。更多相关的信息,参考 [command bus](/docs/{{version}}/bus) 文档。
659685

660686
### 数据库队列
661687

662-
`database` 队列驱动现在已经包含在 Laravel 中了,提供了简单的本地端队列驱动,让你除了数据库相关软件外不需安装其它扩展包
688+
`database` 队列驱动现在已经包含在 Laravel 中了,提供了简单的本地端队列驱动,除了数据库相关软件外不需安装其它扩展包,完全开箱即用
663689

664690
### Laravel 调度器
665691

666-
过去,开发者可以生成 Cron 设置,用以调度所有他们想要运行的命令行命令。然而,这是件很头痛的事情,因为你的命令行调度不在版本控制中,而你必须登录到服务器里加入 Cron 设置。让生活变得简单点。Laravel 命令行调度,让你可以流畅而且具有表达性的定义在 Laravel 里面,定义你的命令调度,而且只需要在服务器里设置一个 Cron 设置。
692+
在过去,开发者是在 crontab 里配置任务调度的。然而,这是件很头痛的事情,因为你的命令行调度不在版本控制中,并且必须登录到服务器里才能添加新的 Cron 设置。
693+
694+
Laravel 命令行调度的存在,就是为了改变这一情况。
667695

668-
它会看起来如下:
696+
命令行调度系统让你在 Laravel 里定义富有表达性的命令调度,而且只需要在服务器里设置一个 Cron 设置即可。
697+
698+
看起来如下:
669699

670700
$schedule->command('artisan:command')->dailyAt('15:00');
671701

672-
当然,快参考 [完整文档](/docs/{{version}}/artisan#scheduling-artisan-commands) 学习所有调度相关知识。
702+
参考 [完整文档](/docs/{{version}}/artisan#scheduling-artisan-commands) 学习所有调度相关知识。
673703

674704
### Tinker 与 Psysh
675705

676-
`php artisan tinker` 命令现在使用 Justin Hileman 的 [Psysh](https://github.com/bobthecow/psysh),一个 PHP 更强大的 REPL。如果你喜欢 Laravel 4 的 Boris,你也会喜欢上 Psysh。更好的是,它可以在 Windows 上运行!要开始使用,只要输入:
706+
`php artisan tinker` 命令现在使用 Justin Hileman 的 [Psysh](https://github.com/bobthecow/psysh),一个 PHP 更强大的 REPL。如果你喜欢 Laravel 4 的 Boris,你也会喜欢上 Psysh。更好的是,它可以在 Windows 上运行!
707+
708+
赶快尝试下吧:
677709

678710
php artisan tinker
679711

680712
### DotEnv
681713

682-
比起一堆令人困惑的、嵌套的环境配置档目录,Laravel 5 现在使用了 Vance Lucas 的 [DotEnv](https://github.com/vlucas/phpdotenv)。这个扩展包提供了超级简单的方式管理配置文件,并且让 Laravel 5 环境侦测变得轻松。更多的细节,参考完整的 [配置文件文档](/docs/{{version}}/configuration#environment-configuration)
714+
比起一堆令人困惑的、嵌套的环境配置文件,Laravel 5 现在使用了 Vance Lucas 的 [DotEnv](https://github.com/vlucas/phpdotenv)
715+
716+
这个扩展包提供了超级简单的方式管理配置文件,并且让 Laravel 5 环境侦测变得轻松。更多的细节,参考完整的 [配置文件文档](/docs/{{version}}/configuration#environment-configuration)
683717

684718
### Laravel Elixir
685719

686-
Jeffrey Way 的 Laravel Elixir 提供了一个流畅、口语化的接口,可以编译以及合并 assets。如果你曾经因为学习 Grunt 或 Gulp 而被吓到,不必再害怕了。Elixir 让使用 Gulp 编译 Less、Sass 及 CoffeeScript 变得简单。它甚至可以帮你运行测试!
720+
Jeffrey Way 的 Laravel Elixir 提供了一个流畅、口语化的接口,可以编译以及合并静态资源。如果你曾经因为学习 Grunt 或 Gulp 而被吓到,不必再害怕了。Elixir 让使用 Gulp 编译 Less、Sass 及 CoffeeScript 变得简单。它甚至可以帮你运行测试!
687721

688722
更多关于 Elixir 的信息,参考 [完整文档](/docs/{{version}}/elixir)
689723

690724
### Laravel Socialite
691725

692-
Laravel Socialite 是个选用的,Laravel 5.0 以上兼容的扩展包,提供了无痛的 OAuth 认证。目前 Socialite 支持 Facebook、Twitter、Google 以及 GitHub。它写起来可能像这样
726+
Laravel Socialite 是可选的,兼容 Laravel 5.0 以上的 OAuth 认证扩展包。目前 Socialite 支持 Facebook、Twitter、Google 以及 GitHub。它写起来是这样的
693727

694728
public function redirectForAuth()
695729
{
@@ -701,20 +735,23 @@ Laravel Socialite 是个选用的,Laravel 5.0 以上兼容的扩展包,提
701735
$user = Socialize::with('twitter')->user();
702736
}
703737

704-
不用再花上数小时编写 OAuth 的认证流程只要几分钟!查看 [完整文档](/docs/{{version}}/authentication#social-authentication) 里有所有的细节。
738+
不再需要花上数小时编写 OAuth 的认证流程只要几分钟!查看 [完整文档](/docs/{{version}}/authentication#social-authentication) 里有所有的细节。
705739

706740
### 文件系统集成
707741

708-
Laravel 现在包含了强大的 [文件系统](https://github.com/thephpleague/flysystem)(一个文件系统的抽象函数库),提供了无痛的集成,把本地端文件系统、Amazon S3 和 Rackspace 云存储集成在一起,
709-
有统一且优雅的 API!现在要将文件存到 Amazon S3 相当简单:
742+
Laravel 现在包含了强大的 [Flysystem 文件系统](https://github.com/thephpleague/flysystem)(一个文件系统的抽象函数库)。
743+
744+
文件系统以抽象的概念,把本地端文件系统、Amazon S3 和 Rackspace 云存储集成在一起,统一且优雅的 API!
745+
746+
现在要将文件存到 Amazon S3 相当简单:
710747

711748
Storage::put('file.txt', 'contents');
712749

713750
更多关于 Laravel 文件系统集成,参考 [完整文档](/docs/{{version}}/filesystem)
714751

715752
### Form Requests
716753

717-
Laravel 5.0 引进了 **form requests**,是继承自 `Illuminate\Foundation\Http\FormRequest` 的类。这些 request 对象可以和控制器方法依赖注入结合,提供一个不需模版的方法,来验证用户输入。让我们深入点,看一个 `FormRequest` 的例子:
754+
Laravel 5.0 引进了 **form requests**,是继承自 `Illuminate\Foundation\Http\FormRequest` 的类。这些 request 对象可以和控制器方法依赖注入结合使用,提供一个不需模版的方法,来验证用户输入。让我们深入点,看一个 `FormRequest` 的例子:
718755

719756
<?php
720757

@@ -736,18 +773,20 @@ Laravel 5.0 引进了 **form requests**,是继承自 `Illuminate\Foundation\Ht
736773
}
737774
}
738775

739-
定义好类后,我们可以在控制器动作里使用类型提示
776+
定义好类后,我们可以在控制器动作里使用类型提示进行依赖注入
740777

741778
public function register(RegisterRequest $request)
742779
{
743780
var_dump($request->input());
744781
}
745782

746-
当 Laravel 的服务容器辨别出要注入的类是个 `FormRequest` 实例,该请求将会被 **自动验证**。意味着,当你的控制器动作被调用了,你可以安全的假设 HTTP 的请求输入己经被验证过,根据你在 form request 类里自定的规则。甚至,若这个请求验证不通过,一个 HTTP 重定向(可以自定),会自动发出,错误消息可以被闪存到 session 中或是转换成 JSON 返回。**表单验证再简单不过如此。** 更多关于 `FormRequest` 验证,参考 [文档](/docs/{{version}}/validation#form-request-validation)
783+
当 Laravel 的服务容器辨别出要注入的类是个 `FormRequest` 实例,该请求将会被 **自动验证**。意味着,框架会自动根据你在 form request 类里自定的规则,对请求进行检验。当控制器动作调用时,你可以安全的假设 HTTP 的请求输入己被验证过。
784+
785+
甚至,若这个请求验证不通过,一个 HTTP 重定向(可以自定义),会自动发出,错误消息可以被闪存到 session 中或是转换成 JSON 返回。**表单验证再简单不过了。** 更多关于 `FormRequest` 验证,请参考 [文档](/docs/{{version}}/validation#form-request-validation)
747786

748787
### 简易控制器请求验证
749788

750-
Laravel 5 基底控制器包含一个 `ValidatesRequests` trait。这个 trait 包含了一个简单的 `validate` 方法可以验证请求。如果对你的应用程序来说 `FormRequests` 太复杂了,参考这个
789+
Laravel 5 基底控制器包含一个 `ValidatesRequests` trait。这个 trait 包含了一个简单的 `validate` 方法可以验证请求。如果对你的应用程序来说 `FormRequests` 太复杂了,可以考虑使用手动验证方法
751790

752791
public function createPost(Request $request)
753792
{
@@ -757,68 +796,72 @@ Laravel 5 基底控制器包含一个 `ValidatesRequests` trait。这个 trait
757796
]);
758797
}
759798

760-
如果验证失败,会抛出异常以及返回适当的 HTTP 响应到浏览器。验证错误信息会被闪存到 session!而如果请求是 AJAX 请求,Laravel 会自动返回 JSON 格式的验证错误信息。
799+
如果验证失败,会抛出异常以及返回适当的 HTTP 响应到浏览器。验证错误信息会被闪存到 session!而如果请求是 AJAX 请求,Laravel 会自动返回 JSON 格式的验证错误信息。
761800

762801
更多关于这个新方法的信息,参考 [这个文档](/docs/{{version}}/validation#controller-validation)
763802

764803
### 新的生成器
765804

766-
因应新的应用程序默认架构,框架添加了 Artisan generator 命令。使用 `php artisan list` 瞧瞧更多细节
805+
为了响应新的应用程序默认架构,框架新增了许多 Artisan generator 命令。使用 `php artisan list` 查看完整的命令列表
767806

768807
### 配置文件缓存
769808

770-
你现在可以通过 `config:cache` 命令将所有的配置文件缓存在单个文件中了
809+
你现在可以通过 `config:cache` 命令将所有的配置文件缓存在单个文件中,这样在一定程度上会加快框架的启动效率
771810

772811
### Symfony VarDumper
773812

774-
出名的 `dd` 辅助函数,其可以在调试时输出变量信息,已经升级成使用令人惊艳的 Symfony VarDumper 扩展包。它提供了颜色标记的输出,甚至数组可以自动缩合。在项目中试试下列代码:
813+
广为使用的 `dd` 辅助函数,用作在调试时输出变量信息,现采用令人惊艳的 Symfony VarDumper 扩展包。它提供了颜色标记的输出,甚至数组可以自动缩合。在项目中试试下列代码:
775814

776815
dd([1, 2, 3]);
777816

778817
<a name="laravel-4.2"></a>
779818
## Laravel 4.2
780819

781-
此发行版本的完整更动列表可以从一个 4.2 的完整安装下,运行 `php artisan changes` 命令,或者 [Github 上的更动纪录](https://github.com/laravel/framework/blob/4.2/src/Illuminate/Foundation/changes.json)此纪录仅含括主要的强化更新和此发行的更动部分
820+
此发行版本的完整的变更列表可以通过运行 `php artisan changes` 命令来获取,或者 [Github 上的更动纪录](https://github.com/laravel/framework/blob/4.2/src/Illuminate/Foundation/changes.json)此纪录仅含括主要更新和此发行的更动部分
782821

783-
> **附注:** 在 4.2 发布周期间,许多小的 BUG 修正与功能强化被整并至各个 4.1 的子发行版本中。所以最好确认 Laravel 4.1 版本的更新列表。
822+
> **附注:** 在 4.2 开发期间,许多小的 BUG 修正与功能强化被整合至各个 4.1 的子发行版本中。所以,也请一并检查 Laravel 4.1 版本的更新列表。
784823
785824
### PHP 5.4 需求
786825

787826
Laravel 4.2 需要 PHP 5.4 以上的版本。此 PHP 更新版本让我们可以使用 PHP 的新功能:traits 来为像是 [Laravel 收银台](/docs/billing) 来提供更具表达力的接口。PHP 5.4 也比 PHP 5.3 带来显著的速度及性能提升。
788827

789828
### Laravel Forge
790829

791-
Larvel Forge,一个网页应用程序,提供一个简单的接口去创建管理你云端上的 PHP 服务器,像是 Linode、DigitalOcean、Rackspace 和 Amazon EC2。支持自动化 nginx 设置、SSH 密钥管理、Cron job 自动化、通过 NewRelic & Papertrail 服务器监控、「推送部署」、Laravel queue worker 设置等等。Forge 提供最简单且更实惠的方式来部署所有你的 Laravel 应用程序
830+
Larvel Forge,一个网页应用程序,提供一个简单的接口让你创建管理云端上的 PHP 服务器,像是 Linode、DigitalOcean、Rackspace 和 Amazon EC2。
792831

793-
默认 Laravel 4.2 的安装里,`app/config/database.php` 配置文件默认已为 Forge 设置完成,让在平台上的全新应用程序更方便部署。
832+
支持自动化 nginx 设置、SSH 密钥管理、Cron job 自动化、通过 NewRelic & Papertrail 服务器监控、「推送部署」、Laravel queue worker 设置等等。Forge 提供最简单且更实惠的方式来部署所有你的 Laravel 应用程序。
833+
834+
默认 Laravel 4.2 的安装里,`app/config/database.php` 配置文件已为 Forge 设置完成,让你更方便的完成新平台上的全新应用程序的部署。
794835

795836
关于 Laravel Forge 的更多信息可以在 [官方 Forge 网站](https://forge.laravel.com) 上找到。
796837

797838
### Laravel Homestead
798839

799-
Laravel Homestead 是一个为部署健全的 Laravel 和 PHP 应用程序的官方 Vagrant 环境。绝大多数的封装包的依赖与软件在发布前已经部署处理完成,让封装包可以极快的被启用。Homestead 包含 Nginx 1.6、PHP 5.5.12、MySQL、Postres、Redis、Memcached、Beanstalk、Node、Gulp、Grunt 和 Bower。Homestead 包含一个简单的 `Homestead.yaml` 配置文件,让你在单个个封装包中管理多个 Laravel 应用程序。
840+
Laravel Homestead 是一个健全的 Laravel 和 PHP 应用程序 Vagrant 环境。软件依赖都已提前准备好,可以极快的被启用。
841+
842+
Homestead 包含 Nginx 1.6、PHP 5.5.12、MySQL、Postres、Redis、Memcached、Beanstalk、Node、Gulp、Grunt 和 Bower。Homestead 包含一个简单的 `Homestead.yaml` 配置文件,允许你在单个封装包中管理多个 Laravel 应用程序。
800843

801-
默认的 Laravel 4.2 安装中包含的 `app/config/local/database.php` 配置文件使用 Homestead 的数据库作为默认。让 Laravel 初始化安装与设置更为方便。
844+
默认的 Laravel 4.2 安装中包含的 `app/config/local/database.php` 配置文件已经为你配置好了 Homestead 的数据库连接。让 Laravel 初始化安装与设置更为方便。
802845

803846
官方文档已经更新并包含在 [Homestead 文档](/docs/homestead) 中。
804847

805848
### Laravel 收银台
806849

807-
Laravel 收银台是一个简单、具表达性的资源库,用来管理 Stripe 的订阅帐务。虽然在安装中此组件依然是选用,我们依然将收银台文档包含在主要 Laravel 文档中。此收银台发布版本带来了数个错误修正、多货币支持还有支持最新的 Stripe API。
850+
Laravel 收银台是一个简单、具表达性的资源库,用来管理 Stripe 的订阅服务。虽然安装此组件是可选的,我们仍然将收银台文档包含在主要 Laravel 文档中。新版本的收银台带来了数个错误修正、多货币支持还有支持了最新的 Stripe API。
808851

809852
### Queue Workers 常驻程序
810853

811-
Artisan `queue:work` 命令现在支持 `--daemon` 参数让 worker 可以以「常驻程序」启用。代表 worker 可以持续的处理队列工作不需要重启框架。这让一个复杂的应用程序部署过程中,使得 CPU 的使用有显著的降低
854+
Artisan `queue:work` 命令现在支持 `--daemon` 参数让 worker 可以作为「常驻程序」启用。代表 worker 可以持续的处理队列工作,而不需要重启框架。这让一个复杂的应用程序对 CPU 的使用率有显著的降低
812855

813856
更多关于 Queue Workers 常驻程序信息请详阅 [queue 文档](/docs/queues#daemon-queue-worker)
814857

815858
### Mail API Drivers
816859

817-
Laravel 4.2 为 `Mail` 函数采用了新的 Mailgun 和 Mandrill API 驱动。对许多应用程序而言,他提供了比 SMTP 更快也更可靠的方法来递送邮件。新的驱动使用了 Guzzle 4 HTTP 资源库。
860+
Laravel 4.2 为 `Mail` 类采用了新的 Mailgun 和 Mandrill API 驱动。对许多应用程序而言,他提供了比 SMTP 更快也更可靠的方法来递送邮件。新的驱动使用了 Guzzle 4 HTTP 资源库。
818861

819862
### 软删除 Traits
820863

821-
对于软删除和全作用域更简洁的方案,PHP 5.4 的 `traits` 提供了一个更加简洁的软删除架构和全局作用域,这些新架构为框架提供了更有扩展性的功能,并且让框架更加简洁。
864+
PHP 5.4 的 `traits` 提供了一个更加简洁的软删除架构和全局作用域,这些新架构为框架提供了更有扩展性的功能,并且让框架更加简洁。
822865

823866
更多关于软删除的文档请见: [Eloquent documentation](/docs/eloquent#soft-deleting)
824867

@@ -839,7 +882,7 @@ Laravel 4.2 为 `Mail` 函数采用了新的 Mailgun 和 Mandrill API 驱动。
839882

840883
### 完整更动列表
841884

842-
此发行版本的完整更动列表,可以在版本 4.1 的安装中命令行运行 `php artisan changes` 获取,或者浏览 [Github 更动档](https://github.com/laravel/framework/blob/4.1/src/Illuminate/Foundation/changes.json) 中了解。其中只记录了该版本比较主要的强化功能和更动。
885+
此发行版本的完整更动列表,可以在版本 4.1 的安装中命令行运行 `php artisan changes` 获取,或者浏览 [Github 更新文件中](https://github.com/laravel/framework/blob/4.1/src/Illuminate/Foundation/changes.json) 中了解。其中只记录了该版本比较主要的强化功能和更动。
843886

844887
### 新的 SSH 组件
845888

@@ -855,7 +898,7 @@ Laravel 4.2 为 `Mail` 函数采用了新的 Mailgun 和 Mandrill API 驱动。
855898

856899
Eloquent 添加了新的 `hasManyThrough` 关系链。想要了解更多,请参见 [Eloquent 文档](/docs/eloquent#has-many-through)
857900

858-
一个新的 `whereHas` 方法也同时登场,他将允许 [检索基于关系模型的约束](/docs/eloquent#querying-relations)
901+
一个新的 `whereHas` 方法也同时登场,他将允许 [检索基于关系模型](/docs/eloquent#querying-relations)
859902

860903
### 数据库读写分离
861904

@@ -879,12 +922,14 @@ Query Builder 和 Eloquent 目前通过数据库层,已经可以自动做到
879922

880923
### 强化路由引擎
881924

882-
Laravel 4.1 拥有一个完全重新编写的路由层。API 一样不变。然而与 4.0 相比,速度快上 100%。整个引擎大幅的简化,且对于路由表达式的编译大大减少对 Symfony Routing 的依赖。
925+
Laravel 4.1 拥有一个完全重新编写的路由层。API 一样不变。然而与 4.0 相比,速度快上 100%。整个引擎大幅的简化,且路由表达式大大减少对 Symfony Routing 的依赖。
883926

884927
### 强化 Session 引擎
885928

886-
此发行版本中,我们亦发布了全新的 Session 引擎。如同路由增进的部分,新的 Session 曾更加简化且更快速。我们不再使用 Symfony 的 Session 处理工具,并且使用更简单、更容易维护的自定义解法。
929+
此发行版本中,我们亦发布了全新的 Session 引擎。如同路由增进的部分,新的 Session 层更加简化且更快速。我们不再使用 Symfony 的 Session 处理工具,并且使用更简单、更容易维护的自定义解法。
887930

888931
### Doctrine DBAL
889932

890933
如果你有在你的迁移中使用到 `renameColumn`,之后你必须在 `composer.json` 里加 `doctrine/dbal` 进依赖扩展包中。此扩展包不再默认包含在 Laravel 之中。
934+
935+

0 commit comments

Comments
 (0)
Please sign in to comment.