翻译

Laravel 5.5 为响应请求提供的可响应接口

Laravel 5.5 的路由中增加了一种新的返回类型:可相应接口(Responsable)。该接口允许对象在从控制器或者闭包路由中返回时自动被转化为标准的 HTTP 响应接口。任何实现 Responsable 接口的对象必须实现一个名为 toResponse() 的方法,该方法将对象转化为 HTTP 响应对象。看示例:

继续阅读 →

本条目由小李刀刀发布于 2017-10-31。属于 PHP,被贴了 PHP、翻译、Laravel 5.5 标签。PHP2017-10-31 · 小李刀刀

Laravel 5.5 为 Mailables 类型新增 theme 属性

在 Laravel 5.4 中 引入了 Markdown 邮件,使得我们在邮件中享受 Blade 模板的组件和 Slots 的同时,可以用 Markdown 语法编写电子邮件。

Laravel 自带了一系列预定义的组件,比如 headers, footers, buttons 以及 tables. 开发者可以很容易地在电子邮件模板中使用这些组件。

继续阅读 →

本条目由小李刀刀发布于 2017-07-24。属于 PHP,被贴了 PHP、翻译、Laravel 5.5 标签。PHP2017-07-24 · 小李刀刀

[译]Laravel 5.0 之 Eloquent 属性转换

本文译自 Matt Stauffer 的系列文章.


之前完全忘了要把这个 Laravel 5 的系列博客写完,不过最近看到了一篇关于属性转换的简介 Laravel 5 Eloquent Attribute Casting is Awesome, 所以我决定把这个特性加到我的系列文章中。官方文档的 Eloquent 相关部分在这里。

什么是属性转换

转换一个属性值的意思是把它转换成某个特定的数据类型(或者是为了确保它是某个特定的数据类型)。数据类型我们都很熟悉了,比如 integer 或者 boolean.

属性转换是 Eloquent 模型的一个功能特性,这个特性让我们可以赋予 Eloquent 模型中的某个属性转换为一个特定的数据类型。

提示:在以前版本中也可以这样做,但是必须为每个属性定义一个自动赋值的方法。而在新版本中可以通过单一的数组配置让模型自动完成这些工作。

这意味着假如你的数据是以特定的格式存储在数据库中,而你在使用时需要的是另外一种格式,现在你可以配置 Eloquent 模型自动完成两种格式之间的转换工作。

为什么要这样做?

最常见的应用场景可能是:当你存储数字的时候——它们默认是返回字符串,但 Eloquent 属性转换可以帮你把字符串转换为 integer, real, float 或者 double,当然还可以转换为 boolean.

但这就是全部了吗?当然不是。

它是如何实现的?

要应用属性转换这个功能,你需要在你的模型中添加一个 protected $casts 的数组变量。

<pre class="brush:php">
/**
 * The attributes that should be casted to native types.
 *
 * @var array
 */
protected $casts = [
    'is_admin' => 'boolean',
];

如上面代码所示,数组中的每个元素以属性名为 key, 要转换的目标类型为 value. 这个数组变量 $casts 的作用就是告诉 Eloquent:“每次当我访问这个模型中的 is_admin 属性的时候,返回一个类型为 boolean 的值给我”。

转换类型

integer(int)

这会把你指定的属性值转换为整形,通过 return (int) $value 来实现。

float(real|double)

Real, Float 和 Double 在 PHP 中是同一种类型。 PHP 的 (double) 和 (real) 类型转换都是 (float) 的别名。所以指定为这三种时,其实在代码中都是通过 return (float) $value 来实现的。

string

这个很简单,就是把你指定的属性值转为字符串返回,用的是 return (string) $value.

boolean(bool)

这是把你指定的属性值转换为布尔值返回,用 return (bool) $value 实现,这意味着你要把你的数据存储为 0 和 1.

object

对象和数组是最有意思的选项。都是用把序列化为 JSON 格式数组的数据转换(反序列化)并返回。如果指定为 object, 那么是用 return json_decode($value) 实现的,返回一个 stdClass 类型的对象。

array

这个值是把 JSON 化的数组转换为 PHP 数组,用 return json_decode($value, true) 实现。

如果你需要看一下源代码,请点击这里。

写在最后

如你所见, Eloquent 属性转换功能把我们从大量不必要的重复逻辑中解放出来,并且默默地让我们更容易在数据库中存储 JSON 数据。真是好东西!

继续阅读 →

本条目由小李刀刀发布于 2015-03-13。属于 PHP,被贴了 开发、PHP、翻译、Laravel 5 标签。PHP2015-03-13 · 小李刀刀

[译]Laravel 5.0 之自定义错误页面

本文译自 Matt Stauffer 的系列文章.


在以往版本的 Laravel 中,假如你想自定义错误页面——比如当用户访问不存在的页面时显示一张猫的 GIF 动画图片——你可能会通过 Google 进行搜索,然后找到 Dries Vints 写的这个文档。

在 Laravel 5 中,这个问题得到了改进。>>直达解决方案

继续阅读 →

本条目由小李刀刀发布于 2015-03-13。属于 PHP,被贴了 开发、PHP、翻译、Laravel 5 标签。PHP2015-03-13 · 小李刀刀

[译]Laravel 5.0 之事件自动生成

本文译自 Matt Stauffer 的系列文章.


创建一个事件及其处理程序,再把两者关联起来,或者创建一个命令及其处理程序,再把两者关联起来。有时候这看起来需要大量的工作。因此我经常期望能有一个工作流可以把所有这些工作整合在一起来处理。

继续阅读 →

本条目由小李刀刀发布于 2015-03-10。属于 PHP,被贴了 开发、PHP、翻译、Laravel 5 标签。PHP2015-03-10 · 小李刀刀

[译]Laravel 5.0 之事件调度程序 (定时任务)

本文译自 Matt Stauffer 的系列文章.


关于 Laravel 5.0 的事件调度程序(可以理解为定时任务),Eric Barnes 有一篇很长的文章。我这篇文章则会尽量简短:

Laravel 5.0 新增了一个框架内置的 cron 风格的令人难以置信的调度程序(与 Indatus 的 Dispatcher 类似)。只要在服务器上设置一个每分钟调用 artisan schedule:run 的 cron job, 一切就准备就绪了。

继续阅读 →

本条目由小李刀刀发布于 2015-02-22。属于 PHP,被贴了 开发、PHP、翻译、Laravel 5 标签。PHP2015-02-22 · 小李刀刀

[译]Laravel 5.0 之运行环境及环境变量

本文译自 Matt Stauffer 的系列文章.


如果你关注我的博客有段时间了,那你应该曾经见过我在 Laravel 环境检测问题上的各种尝试,特别使用环境变量进行检测这方面。例子

感谢 Laravel 5, 它极大地简化了环境检测环节。在 4.x 版的时候,你要创建多个基于运行环境名称的环境配置文件(比如 .env.php, .env.local.php 等)。老实说,我从来用过这个功能。但我觉得理论上你应该会把所有环境配置文件提交到代码库。但由于我们从来不提交任何环境配置文件,所以这种区分环境的手段毫无用处,而且它还会造成环境配置文件的延迟加载,因为只有检测到运行于什么环境之后,它才能进行相应的配置文件加载。

继续阅读 →

本条目由小李刀刀发布于 2015-02-22。属于 PHP,被贴了 开发、PHP、翻译、Laravel 5 标签。PHP2015-02-22 · 小李刀刀