译者 | 苏本如,责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
以下为译文:

在开拓运用程序时选择利用哪个框架,这将取决于很多成分。和其它任何运用程序框架一样,Laravel框架也有其优缺陷。撇开那些令人讨厌的缺陷不谈,这篇文章我们将把重点放在利用Laravel框架的优点上。在我开始谈论Laravel的神奇之处之前,我想先花点韶光谈论一下为什么我们要利用框架来开拓运用程序。而不该用已有的框架,自己开拓构建一个运用程序所需统统的潜在风险是什么?
不该用框架来构建运用程序有什么问题?
为了理解在不该用框架的情形下开拓一个运用程序的潜在风险,让我们假设,我们必须构建一个利用MVC(模型-视图-掌握器)架构模式的运用程序。当你开始设置架构时,我们须要根据运用程序的构造,从很多种架构模式中做出得当的选择。当我想到如果我自己须要开拓一套完全的运用程序体系架构时,我立时想到了几个问题。
首先,我该当从运用程序的哪个组件开始动手处理呢?是先安装所有的第三方依赖项和库吗?从运用程序的可扩展性来考虑,我该当利用什么样的模型类(model class)库来和数据库进行交互?是利用PDO类呢,还是有更好的选择?我将如何管理依赖注入?考虑到后期会有更多的开拓职员在同一个运用程序上事情,我该当如何对这个体系构造做一个完全的记录?
这些问题看起来很难回答,但是我想见告你这些仅仅是个开始。很明显,如果你不是一个熟习MVC体系架构的编程者,那么这些问题本身对你来说都是新问题。如果你以前没有利用过任何框架,你可能从来没有问过这些问题。如果是这样的话,那么这个情由本身就足以让你采取Laravel框架进行运用程序开拓。Laravel框架将为你处理所有这些低级的细节,并为你供应一个简洁和实用的架构模式。同时,Laravel框架将为你处理模型、视图和掌握器之间的无缝交互。并且还将为你供应许多内置在框架中的不同功能,以便你可以专注于编写运用程序的业务逻辑。终极,你由于不必花费韶光探求这些低级问题的办理方法,而节省大量的韶光和精力。
框架供应了同等性和灵巧性
让我们试着想象一下这样一种环境:你正在开拓一个弘大的运用程序,但是没有利用任何现成的框架或者利用自己构建的框架。当用户数量增加或须要添加更多功能时,你将须要更多的开拓职员来开拓和掩护这个运用程序。在新开拓职员入职期间,你除了向他们先容你的开拓团队须要遵照的软件开拓的所有流程步骤和方法之外,你还必须向他们讲解你所构建的全体运用程序构造。
由于这个缘故原由,新的开拓职员必须通过一个高的学习曲线来理解你开拓的新体系构造。但是如果你利用Laravel框架,这类问题将不复存在,由于这个框架会带给你运用程序开拓的同等性。Laravel框架有详细的文档,新开拓职员不必经历利用新框架的学习过程。由于你可以很随意马虎地聘请到一个熟习Laravel框架的开拓职员,并能让他很快开始事情。
当一个团队利用标准化框架(比如Laravel)来构建运用程序时,向团队中添加其他开拓职员就会变得很随意马虎。这是由于:当你雇佣了一个熟习Laravel框架的开拓职员,他能够理解这些代码,由于所有代码都遵照相同的模式。
利用Laravel框架的好处
如果上面这些听起来已经很有趣,并且足以鼓励你在你开拓下一个运用程序时利用框架,那么接下来让我分享一下Laravel框架相对付其它PHP框架所具有的一些上风。这些上风无疑使Laravel框架成为最佳PHP框架的紧张竞争者之一。
1.开箱即用的用户身份验证
Laravel框架供应了开箱即用的用户身份验证功能。任何当代的web运用程序都须要用户身份验证,利用Laravel框架,你险些不须要做任何事情就可以将它设置好。当你设置用户身份验证时,Laravel框架会创建所有主要的组件,如用户模型、注册和登录掌握器,以及相应的视图。而且在将来,根据运用程序所需的业务逻辑,将这些组件扩展到新添加的功能上也是非常随意马虎的。
除此之外,Laravel框架还供应了Socialite package(扩展包),它使你的运用程序能够利用各种社交网络(如Facebook, Google Plus和Twitter)对用户进行身份验证。要使它事情正常,你只需进行最低限度的配置。
2. 约定优于配置(也称作按约定编程)
Laravel框架同样采取“约定优于配置”的方法。这基本上意味着,如果遵照了不同组件的命名约定,就险些不必关注配置事情。如果你遵照了命名约定,Laravel框架自身就会帮你处理许多低级的细节,而且统统都会神奇地开始事情。如果你一贯利用传统的PHP编程,这在一开始可能会让您感到难以忍受。但一旦你尝到了甜头,你就再也不想转头了。
3.轻松利用的电子邮件功能
很难想象一个当代的运用程序会没有电子邮件功能。利用Laravel框架,实现电子邮件发送功能非常随意马虎。除了SMTP和Php邮件功能外,Laravel框架还支持各种各样的电子邮件关照做事,如Mailgun,Mandrill,SparkPost,Amazon SES,SendMail等等。这些做事可以使你能够快速开始通过本地或基于云的做事发送邮件。你还可以利用Nexmo通过Slack和SMS发送关照。所有这些做事在Laravel框架中都是开箱即用的。
Laravel框架还在电子邮件模板中支持Markdown(译者注:Markdown是一个文本到HTML(text-to-HTML)的转换工具),它能够使你在很少的韶光内完成电子邮件的创建事情。
4.Artisan命令
对我个人而言,Artisan命令行是Laravel框架供应的最简练和最有用的功能。Artisan是Laravel框架的命令行接口,它帮助开拓职员利用命令行本身自动化许多任务。Artisan命令可以在运用程序本身中利用,开拓职员也可以创建额外的Artisan命令。
你能够想到的所有常见任务,都能找到一个Artisan命令与之对应。例如,创建一个模型、创建一个掌握器、创建一个数据库种子、迁移数据库等等。这个列表是无穷无尽的。我之以是说它“简练”,是由于你所要做的便是通报命令,剩下的事情全交给Laravel框架来处理。
5.“测试驱动开拓”的测试自动化
Laravel框架自带对PHPUnit的支持,使得采取“测试驱动开拓”模式的PHP运用程序的测试变得非常随意马虎。为运用程序编写单元测试变得很大略,而且确保事情按照你希望的办法进行。
6.简洁的依赖注入
一旦你开始利用Laravel框架事情,你很快就会意识到Laravel框架是从Ruby on Rails和更多的函数式措辞中得到的灵感,而不是从Java。这一点从Laravel框架处理依赖注入的办法就可以轻易地看出这一点。只管实现依赖注入可以采纳繁芜的模式,但Laravel框架采纳的做法与之相反,它供应了创建全局助手函数的大略方法。借助于全局函数和Façade静态代理,我们就可以在任何必要的地方轻松地实现依赖注入。
7.业务逻辑和显示代码的分离
Laravel遵照模型-视图-掌握器(MVC)架构模式,将业务逻辑与视图分离。这种方法有很多优点。而要真正理解它优点,你须要理解什么是MVC模式,以及你的运用程序是否须要这样的体系架构。
8. Eloquent ORM(工具关系映射)实现
Eloquent是Laravel供应的ORM(工具关系映射)实现。更多信息可以参考维基百科中的链接(https://en.wikipedia.org/wiki/Object-relational_mapping)。Eloquent使得从数据库中获取数据变得非常随意马虎。创建表之间的关系并从这些表中获取数据也变得很大略。Eloquent还许可你在表中创建各种连接,并供应许多帮助函数,使与数据库的交互变得非常大略。你险些不必编写SQL查询语句或函数。由于有了Eloquent ORM,Laravel框架就可以为下面这些数据库供应开箱即用的支持:
MySQL
PostgreSQL
SQLite
SQL Server
你真是说对了,这基本上意味着只要你利用Eloquent,你就不必担心与上述任何数据库的兼容性。从一个数据库切换到另一个数据库也非常随意马虎。现在试着想象一下这给你的运用程序带来的可扩展性,不妨让我用一个例子来阐明这一点。假设你有一个运用程序,这个运用程序在开始时有一个很小的用户群。由于用户数量较小且运用程序处于初始阶段,因此你决定利用MySQL作为数据库。一段韶光过后,你的运用程序的用户数量增长到了相称高的级别,现在你可能须要切换到SQL Server数据库。由于利用了Eloquent,这个切换现在变得非常大略,就像变动Laravel框架中的特定配置详细信息一样随意马虎。
9.行列步队(Queue)和调度器(Scheduler)
在开拓运用程序时,常日会有一些耗时的任务。这些任务须要推迟到稍后的韶光实行,这样它们就不会给用户的流程造成壅塞。这类任务的一个完美例子可能是天生一个统计用户要求创建CSV文件的PDF报告。Laravel框架的行列步队做事供应了一个统一的API,用于将这些任务推迟到运用程序的稍后韶光处理。
谈到Laravel框架的命令调度器,它是那些繁琐的定时任务(Cronjob)的完美替代品。在很多时候,开拓职员必须为特定的任务设置定时作业。这种任务的一个完美例子是向所有订阅用户发送他们订阅的每周简讯(Newsletter)。为了设置这个定时作业,开拓职员必须利用SSH命令登录到做事器并在操作系统级别设置这个定时作业。这在一段韶光内会成为一个麻烦,由于这些定时作业不能成为GIT和其它版本掌握系统管理的一部分。但是Laravel框架的命令调度器利用内置函数供应了一个干净的API来调度各种各样的任务。这样,你就不必利用SSH命令登录到做事器的终端,并且所有这些被调度的作业都成为代码的一部分而纳入版本掌握系统管理的范围。
10.简洁的路由
Laravel框架处理路由的办法大略直不雅观。有一个单一的web.php文件来处理所有的web路由。如果某些路由须要公共中间件,它们可以很随意马虎地在Laravel等分组。
路由的一个完美的运用处景是:运用程序中的某些页面,在用户可以查看它们之前,这些页面须要用户身份验证。Laravel框架可以将所有这些页面分组,并且经由Auth中间件检讨,以确保只有登录到系统的用户才能查看这些页面。Laravel框架还供应了一个简洁的路由模型绑定(route model binding),个中模型(model)可以绑定到路由。有了这个帮助,视图可以直接从路由本身返回,乃至不须要访问掌握器。
11. Composer管理依赖关系
Laravel框架利用Composer管理依赖关系和自动加载。Composer可以帮助你安装Laravel扩展包,这使得依赖管理变得轻而易举。在任何时候,你都可以检讨package.json文件来查看你的运用程序正在利用的所有依赖项。Composer还让你能够利用单个Composer命令更新依赖项。
12.Blade模板引擎
Blade是Laravel框架的模板引擎。Blade可以让你在分离视图和业务逻辑上领先一步。它能让你的视图代码保持非常干净。一旦你对MVC架构模式和Laravel对它的实现有了清楚的理解,你就会更加清楚地认识到Blade模板引擎的主要性。Blade还供应了模板继续,因此你可以将最近利用的模板划分为多个部分,并让其它视图文件继续这些部分。有了Blade的帮助,你就可以创建一些逻辑较小的视图部分,然后可以包含这些小的部分以形成完全的视图。
13.文档
这是一个有点灰色的区域。当我最初开始利用Laravel框架的时候,我在查找文档时确实碰着了问题。当时所有的统统都没有文档,但是在某个时候我溘然创造有些事情开始神奇地事情,那便是大家始遵照命名规范的那个时候。现在,有一些API文档列出了Laravel框架中声明的每个类和方法。一旦你节制了如何利用它,并且知道如何利用Laravel文档来为你的利益做事,我担保你不会再有任何抱怨。
14.生动社区
Laravel确实有一个生动的社区。当你碰着任何问题时,你都可以搜索,而且肯定会查到许多针对你的问题的StackOverflow帖子。除了在StackOverflow上有一个生动的社区外,还有一个叫做Laracast的谈论论坛。你可以免费注册成为Laracast论坛和社区的一部分,那个社区现在非常生动。
我认为这些上风足以让你对Laravel框架感到愉快。只管把它定义为完美肯定是浮夸其词了,但我可以肯定的是,Laravel框架绝对是最好的PHP框架之一。
原文: https://hackernoon.com/14-reasons-why-Laravel-is-a-contender-for-the-best-php-framework-6h5f31rp
本文为 CSDN 翻译,转载请注明来源出处。
【END】
随着智能物联迅速的兴起,场景联动越来越普遍,作为拍门砖的连接做事该如何实现?
360 资深工程师深度揭秘 360 IoT 云平台连接做事的技能框架实现细节、物联网协议运用和多协议,多网络的落地实践以及连接做事未来的演进方向。