加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

PHP编程:Laravel 5.0 发布 新版本特性详解

发布时间:2020-12-14 19:51:32 所属栏目:大数据 来源:网络整理
导读:《Laravel 5.0 发布 新版本特性详解》要点: 本文介绍了Laravel 5.0 发布 新版本特性详解,希望对您有用。如果有疑问,可以联系我们。 PHP编程 译注: 期待 Laravel 5.0 已经很久很久了,之前跳票说要到今年一月份发布. 从一月份就一直在刷新官网和博客,始终没

《Laravel 5.0 发布 新版本特性详解》要点:
本文介绍了Laravel 5.0 发布 新版本特性详解,希望对您有用。如果有疑问,可以联系我们。

PHP编程译注: 期待 Laravel 5.0 已经很久很久了,之前跳票说要到今年一月份发布. 从一月份就一直在刷新官网和博客,始终没有更新的消息,前几天终于看到官网文档切换到了 5.0 版. 新版本带来了众多令人激动的新特性,尤其是定时任务队列和表单哀求两个特性,光看一下更新说明中的简单介绍都忍不住要上手尝试了. 今天总算抽出一点时间把官方的新特性说明文档简单地翻译了一下,希望所有喜欢 Laravel 框架的朋友都能感受到这个版本带来的激动人心的改变. 当然,如果你需要的是 Phalcon 那样的性能,那它肯定不是你需要的. 如果你是因为虚拟主机不支持 php 5.4 而不能享受 Laravel,那你还不扔了你的虚拟主机??? 阿里云腾讯云linode... VPS的选择不要太多...

PHP编程Laravel 5.0

PHP编程Laravel 5.0 引入了全新的项目目录结构. 新的目录结构更有利于用 Laravel 来创建应用. 5.0 版从头到尾都采用了新的 PSR-4 自动加载尺度. 以下是 5.0 版主要的新特性:

PHP编程目录布局

PHP编程以前版本中的 app/models 目录被整个移除. 如今你可以直接把代码放在 app 目录下,该目录下的所有代码默认会被组织到 app 定名空间. 这个定名空间是可以通过新增加的 Artisan 命令 app:name 来修改的.

PHP编程Controllers,middleware 和 requests (Laravel 5.0 新增加的一种类) 被组织到 app/Http 目录,因为他们都是与你应用的 HTTP 传输层相关的类. 与之前把所有路由过滤器放到单一的 filters 文件下不同,现在所有的 middleware (类似之前的 route filter) 被分别存放到各自本身的类文件中.

PHP编程新版本中增加了一个 app/Providers 目录来代替之前 4.x 版本的 app/start 文件. 这些 service providers 为应用提供各种各样的引导办法,比如错误处理,日志记录,路由加载等. 除此之外你当然也可以创建额外的 service providers.

PHP编程利用的语言文件和视图被移到了 resources 目录.

PHP编程Contracts

PHP编程Laravel 的所有主要组件都实现了存放在 illuminate/contracts 仓库中的接口. 该仓库没有额外的依赖项. 拥有这样一个便利的,集中存放的接口集合,你就可以很容易地通过它来对 Laravel Facades 进行解耦和依赖注入方面的选择和修改.

PHP编程了解有关 contracts 的更多信息,可以查看它的完备文档.
路由缓存

PHP编程如果你的应用由各种各样的控制器路由 (controller routes) 组成,你可以利用新增的 Artisan 命令 route:cache 大幅度提升路由的注册速度. 这在路由数量超过 100 个的应用中尤其有效,可以 大幅度 提升整个应用在路由部门的速度.

PHP编程路由中央件 (Route Middleware)

PHP编程在 4.0 版风格的路由 "过滤器" 基础上,新版 5.0 已经支持 HTTP 中间件,Laravel 自带的 "authentication" 和 "filters" 已经被转换成中间件. 中间件为所有类型的过滤器提供了单一接口,你可以很容易地对哀求进行审查和拒绝.

PHP编程了解有关中间件的更多信息,可以查看它的完备文档.

PHP编程控制器办法注入

PHP编程除了现有的构造器注入以外,在新版本中还可以在控制器办法中的依赖项进行类型约束. IoC container 会自动注入依赖项,即使在路由包含其它参数的时候也是.

代码如下:

public function createPost(Request $request,PostRepository $posts)
{
??? //
}

认证脚手架

PHP编程用户注册,认证以及暗码重置控制器已经内置在 5.0 版的网站框架中,除了控制器以外,还有简单的视图,存放在 resources/views/auth 目录. 除此之外,网站初始框架中还包含了一个 "users" 表的 migration 文件. 这些简单的资源帮助开发者不用在用户认证功能上耗费大量时间. 认证相关的页面可以通过 auth/login 和 auth/register 这两个路由访问. AppServicesAuthRegistrar 服务负责处理创建和认证用户.

PHP编程变乱对象

PHP编程在新版本中,你可以把变乱定义成对象而不是字符串. 看下面的例子:

代码如下:

class PodcastWasPurchased {
?
??? public $podcast;
?
??? public function __construct(Podcast $podcast)
??? {
??????? $this->podcast = $podcast;
??? }
?
}

这个变乱可以这样调用:

PHP编程Event::fire(new PodcastWasPurchased($podcast));
当然,你的变乱处理程序收到的也不再是一个数据列表,而是一个变乱对象:

代码如下:

class ReportPodcastPurchase {
?
??? public function handle(PodcastWasPurchased $event)
??? {
??????? //
??? }
?
}

了解有关变乱的更多信息,可以查看它的完整文档.

PHP编程命令/队列

PHP编程在 4.0 版支持的任务队列基础上,5.0 支持把任务队列定义为简单的命令对象. 这些命令寄存在 app/Commands 目录. 下面是一个简单的命令示例:

代码如下:

class PurchasePodcast extends Command implements SelfHandling,ShouldBeQueued {
?
??? use SerializesModels;
?
??? protected $user,$podcast;
?
??? /**
???? * 创建新的命令实例
???? *
???? * @return void
???? */
??? public function __construct(User $user,Podcast $podcast)
??? {
??????? $this->user = $user;
??????? $this->podcast = $podcast;
??? }
?
??? /**
???? * 执行命令
???? *
???? * @return void
???? */
??? public function handle()
??? {
??????? // 处理购买播客视频的逻辑
?
??????? event(new PodcastWasPurchased($this->user,$this->podcast));
??? }
?
}

Laravel 的基础控制器 (base controller) 使用了新的 DispatchesCommands 特性,允许你很方便地监控命令的执行:

PHP编程$this->dispatch(new PurchasePodcastCommand($user,$podcast));
当然,你不仅可以把命令用于任务队列(非同步执行),也可以用于同步任务. 事实上,把你的应用必要执行的复杂任务封装成命令是一个很好的选择. 了解有关命令的更多信息,可以查看命令桥的详细文档.

PHP编程数据库行列步队

PHP编程新版 Laravel 包括 database 队列驱动,提供简单的,本地的队列驱动,无需安装额外的包. (译注:比如让不支持事务的数据库进行类似事务的数据操作)

PHP编程Laravel 准时任务

PHP编程在过去,为了定时执行控制台任务,开发者必须依赖 Cron 任务. 这带来很大不便. 因为定时任务并不包含在网站的源代码中,而且必须通过 SSH 登陆到服务器去添加 Cron 任务. 新版 Laravel 的定时任务允许开发者在 Laravel 框架内来定义定时执行的命令,然后只需要在服务器上定义一个总的 Cron 任务即可.

PHP编程好比:

代码如下:

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

同样的,了解更多有关准时任务的信息,可以查阅完整文档.

PHP编程Tinker / Psysh

PHP编程php artisan tinker 命令在新版本中借助了 Justin Heleman 开发的 Psysh. 如果你喜欢 Laravel 4.0 里的 Boris,你肯定会喜欢 Psysh. Boris 在 Windows 下运行得不好,Psysh 完全支持 Windows! 使用办法和以前一样:

代码如下:

php artisan tinker

DotEnv

PHP编程在 Laravel 5.0 中,用 Vance Lucas 实现的 DotEnv 替代了以前版本中的嵌套结构,容易让人困惑的环境配置目录. 这个框架提供了一种非常简单的管理环境配置的方式. 在 Laravel 5.0 中检测和区分不同的运行环境变得轻而易举. 了解更多详情,请拜访完整的配置文档.

PHP编程Laravel Elixir

PHP编程由 Jeffrey Way 提供的 Laravel Elixir 提供了简明易懂的合并,编译资源文件的接口. 如果你曾经对配置 Grunt 或者 Gulp 感到很头年夜,那么现在你得到解放了. Elixir 让你可以轻松地借助 Gulp 来编译你的 Less,Sass 和 CoffeeScript 文件. 它甚至可以替你执行测试.

PHP编程了解 Elixir 的更多详情,请拜访完整文档.

PHP编程Laravel Socialite

PHP编程Laravel Socialite 只兼容 Laravel 5.0 以上版本的可选包,它提供了完整而且上手毫无难度的 OAuth 办理方案. 目前,Socialite 支持 Facebook,Twitter,Google 和 Github. 它看起来是这个样子的:

代码如下:

public function redirectForAuth()
{
??? return Socialize::with('twitter')->redirect();
}
?
public function getUserFromProvider()
{
??? $user = Socialize::with('twitter')->user();
}

所以你不用再耗费大量的时间来编写 OAuth 认证流程,分分钟轻松搞定. 完整文档 包括有关这个可选包的全部细节.

PHP编程Flysystem 集成

PHP编程新版 Laravel 还包括了强大的 Flysystem 文件处理静态库. 通过这个库,开发者可以轻易上手,使用完全一致的 API 来实现本地,Amazon S3 或者 Rackspace 进行文件存储. 比如,在 Amazon S3 存储一个文件,可以简单到这样:

代码如下:

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

了解有关 Laravel Flysystem 集成的更多细节,可以查看它的完整文档

PHP编程表单哀求

PHP编程Laravel 5.0 带来了全新的 form requests,它扩展自 IlluminateFoundationHttpFormRequest 类. 这些哀求对象可以和控制器方法注入相结合,提供一种全新的验证用户输入的方法. 简单举一个 FormRequest 的示例:

代码如下:

namespace AppHttpRequests;
?
class RegisterRequest extends FormRequest {
?
??? public function rules()
??? {
??????? return [
??????????? 'email' => 'required|email|unique:users',
??????????? 'password' => 'required|confirmed|min:8',
??????? ];
??? }
?
??? public function authorize()
??? {
??????? return true;
??? }
?
}

定义好对应的 FormRequest 扩展类之后,在控制器方法中可以获得类型提示:
代码如下:

public function register(RegisterRequest $request)
{
??? var_dump($request->input());
}

当 Laravel 的 IoC container 识别到方法变量的类型时,它会自动注入 FormRequest 的实例,于是这个哀求会被 自动验证. 这意味着当你的控制器被调用时,你可以安全地使用该哀求中包含的输入数据,因为他们已经被你在表单哀求类中指定的规则进行过验证了. 不仅如此,如果该哀求验证失败,系统还会自动重定向到你预定义好的路由,并且包含有错误提示的信息(根据需要写入session,或者转换为 JSON 格式.) 表单验证从未如此简单过. 了解有关 FormRequest 验证的更多细节,请查阅文档.

PHP编程控制器哀求简单验证

PHP编程Laravel 5.0 的控制器基类还包含了一个 ValidatesRequests 的 trait. 该 trait 提供了简单的 validate 方法,用于验证哀求. 如果 FormRequests 对于你的应用来说太重了,那你就可以用这个轻量版的:

代码如下:

public function createPost(Request $request)
{
??? $this->validate($request,[
??????? 'title' => 'required|max:255',
??????? 'body' => 'required',
??? ]);
}

如果验证失败,系统会抛出一个异常,对应的 HTTP 哀求会被自动发送给浏览器. 验证错误也会同时写入 session. 如果哀求是用 AJAX 方式发起,Larave 会自动发送一个 JSON 形式的验证错误信息.

PHP编程了解有关 FormRequest 验证的更多细节,请查阅文档.

PHP编程全新的天生器

PHP编程为了便利生成新的默认应用结构,全新的 Artisan 生成命令已经被添加到框架中. 你可以通过 php artisan list 查看详细命令.

PHP编程设置装备摆设缓存

PHP编程通过 config:cache 敕令,可以把所有的配置项写入一个缓存文件中.

PHP编程Symfony VarDumper

PHP编程用于输出变量信息进行调试的辅助办法 dd,在新版本中进行了升级,使用强大的 Symfony VarDumper. 它可以输出带有颜色高亮和数组折叠功能的调试信息. 你可以尝试一下:

代码以下:

dd([1,2,3]);

《Laravel 5.0 发布 新版本特性详解》是否对您有启发,欢迎查看更多与《Laravel 5.0 发布 新版本特性详解》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读