开拓职员不仅卖力编写运用程序中独特的业务逻辑代码,还卖力编写跨站点的各个公共组件的代码,包括用户认证、输入验证、数据库访问和模板等内容。

当今已经有数十个运用程序开拓框架可供程序员选择,并且可以轻松获取数千个组件和库。
程序员常日面临的一个问题是 :在学习一款框架的时候,一些新的框架(而且听说是更好的框架)已经涌现,并且在未来可能会取代正学习的这款框架。

“由于山在那里”,大概是攀登一座山峰的情由,但是选择利用一个特定的框架可以有更好的情由。
值得思考的是 :为什么利用框架?更准确地说,为什么利用Laravel这个框架?

php全栈开发宇宙最强说话PHP的全栈框架Laravel来了 CSS

PART.01为什么要利用框架

从PHP开拓职员可以利用的一些组件及软件包(也简称为包)来看,实在很随意马虎得知为什么利用这些组件以及包会有很多好处。
利用包,可以让其他人卖力开拓和掩护一个独立的、具有特定功能的代码块,从理论上说,开拓职员可以有更多的韶光对这些单个的组件进行深入的理解与研究。

像Laravel、Symfony、Lumen 和 Slim 等框架会将第三方组件和自定义框架预先安装好,如配置文件、做事供应者、规定的目录构造,以及运用程序勾引等。

以是,一样平常来说,利用框架的好处是,不仅为开拓职员选择了好的单独组件,而且能帮助开拓职员决定如何组合这些组件。

▊ “自己动手做”

让我们来剖析一下没有框架时的不便之处。
如果你要创建一个 Web 运用,会从哪里开始呢?

大概会从 HTTP 要求开始,以是现在须要评估所有可用的 HTTP 要求库和 HTTP 相应库并在个中选择一个。
接下来须要建立路由,可能须要设置好某种形式的路由配置文件。

该当利用什么语法?怎么做好掌握器?该当把它们放在哪里,以及如何加载它们?可能须要一个依赖注入容器来办理掌握器及其依赖问题,但是详细选择哪一个呢?

此外,如果花韶光办理了以上所有问题并成功创建了运用程序,会对下一个开拓职员产生什么影响?并且,当有多个这样基于自定义框架的运用程序时,你还必须记住每个运用程序中掌握器的位置,以及路由的语法等。

▊ 同等性和灵巧性

“我们该当在这里利用哪个组件?”框架办理了这个问题。

它供应了一个经寻思熟虑后得到的答案,并确保你所选择的特定组件能够很好地协同事情。

此外,框架供应了一些约定,可以减少开拓职员在创建新项目时必须理解的代码量。
例如,如果你理解一个 Laravel项目中的路由是如何事情的,那么也就理解了路由在所有 Laravel 项目中的事情事理。

当有人为每一个新项目制订自己的框架时,他们真正在意的是在不改变运用程序根本部分内容的条件下,还可以去掌握什么。
这意味着好的框架不仅可以供应稳定的根本部分内容,而且还可以对核心部分的内容进行个性化定制。
正如本书别的部分所展示的一样,这也是 Laravel 框架如此特殊的缘故原由之一。

PART.

02

Laravel有什么特殊之处

是什么让 Laravel 分歧凡响的呢?为什么任何时候都要有一个以上的 PHP 框架?它们都利用 Symfony 的组件,对吧?让我们来谈谈是什么让 Laravel 变得特殊的。

▊ Laravel的哲学

只须要阅读 Laravel 的营销材料和自述文件(README),就能看到它的代价。

Taylor 利用了一些与光干系的词汇,如照明(Illuminate)、火花(Spark),然后还有词汇 :工匠(Artisan)、优雅(Elegant)。
除此之外,还有一些短语 :呼吸新鲜空气(Breath of fresh air)、新的开始(Fresh start)。
末了还有词语 :快速(Rapid)、异乎平凡的速率(Warp speed)。

这个框架通报出两个强烈的代价感 :提高开拓职员的开拓速率和开拓职员的幸福感。

Taylor将“工匠(Artisan)”措辞描述为一种更具有实用代价的措辞。

在2011年提出的StackExchange 问题上,就可以看到这种想法的起源,Taylor说:“有时候我花了大量的韶光,只是为了让代码看起来更俊秀,这是比较令人苦恼的事情。
而且这只是为了更好地阅读代码。
”他常常谈到要让开发职员更随意马虎、更快地实现他们的想法,肃清不必要的、创建精良产品的障碍。

Laravel的核心是为开拓职员供应装备和支持。
它的目标是供应清晰、大略、俊秀的代码和特性,帮助开拓职员快速学习和开拓,并编写出大略、清晰和持久的代码。

针对开拓者的观点,在 Laravel 材料中写得很清楚,该文档中明确写道 :快乐的开拓者创造最好的代码。
同时,“让开发职员从下载到支配都感到快乐”亦是一段非正式的口号。

当然,任何工具或框架都会说它想让开发职员感到快乐。
但是,把开拓职员的快乐作为紧张关注工具而不是次要的问题,这一点对 Laravel的风格和决策过程产生了巨大的影响。

在其他框架中,可能会把保持架构的纯清水平作为紧张目标,抑或须要符合企业开拓团队的目标和代价不雅观,而 Laravel 的紧张目标则是为开拓职员做事。
这并不虞味着你不能用 Laravel 编写出具有良好架构的运用程序或企业级运用程序,而意味着利用 Laravel 编写运用程序可以不捐躯代码库的可读性与可理解性。

▊ Laravel如何让开发者感到快乐

只是说想让开发职员感到快乐是一回事,真正做到则是另一回事,这须要你预测框架中什么地方最有可能让开发职员感到不愉快,什么地方又最有可能让他们感到愉快。

Laravel 试图通过几种方法让开发职员的生活变得更加轻松。

首先,Laravel 是一个快速的运用程序开拓框架。
这意味着它关注大略的学习过程,并只管即便减少一个新的运用程序从启动到发布的步骤。
所有在构建 Web 运用程序时最常见的任务,从数据库交互到身份验证、从行列步队到电子邮件再到缓存,都通过 Laravel 供应的组件简化了。
但是,Laravel 组件的功能并不仅仅局限于此,它们在全体框架中供应了统一的 API 和稳定的构造。
这意味着,在 Laravel 中做新的考试测验时,开拓职员很可能做出肯定的评价:“便是这么好用!

Laravel 的好处也不仅于此,其还供应了一个完全的、用于构建和发布运用程序的工具生态系统。
可以利用 Laravel 的 Homestead 以及 Valet 工具进行本地开拓,利用 Forge 工具进行做事器管理,以及利用 Envoyer 工具进行高等支配。
此外,还有一套附加组件:Cashier(用于支付和订购)、Echo(用于 WebSocket 编程)、Scout(用于实现搜索功能)、Passport(用于 API 认证)、Dusk(用于前端测试)、Socialite(用于社交登录)、Horizon(用于监控行列步队)、 Nova(用于构建管理员面板)及 Spark(用于 SaaS 勾引)等。
Laravel 正试图从开拓职员的事情中提取出重复性的事情,这样开拓职员就可以做一些独特的事情了。

接下来要说的是,Laravel 关注的是“约定优于配置”,这意味着,如果你乐意利用Laravel 的默认设置,那么比较于其他框架,可以减少很多事情。
在其他框架中,纵然利用了推举的配置,也须要对所有的设置进行声明。
因此,利用 Laravel 构建的项目比其他大多数 PHP 框架花费的韶光少。

Laravel 还专注于简约性。
如果须要,可以利用依赖注入(injection)、仿照(mocking)、数据映射模式(Data Mapper pattern)、仓库(repositories)模式、命令查询任务分离(Command Query Responsibility Segregation),以及其他更繁芜的架构模式。

虽然其他框架可能会建议在每个项目中利用这些工具和构造,但是 Laravel 及其文档和社区更方向于从最大略的开始,比如从一个全局函数、外不雅观(facade)、ActiveRecord 开始。
这使得开拓职员可以创建最大略的运用程序来办理他们的需求,并且不限定其在繁芜环境中的利用。

有趣的是,Laravel 的创造者以及它的社区与 Ruby、Rails 和函数式编程措辞有较多的联系,而与 Java 的联系较少。
在当代 PHP 中,有一个强大的趋势,那便是框架方向于变得更加繁芜,它席卷了更多的 Java 风格的 PHP 代码。
但 Laravel 则不同,它会追求更富有表现力的、动态的、大略的编码实践和措辞特性。

▊ Laravel 社区

如果你是第一次打仗 Laravel 社区,那么会有一些事情令你期待。
Laravel 有一个显著的特点,它的发展和成功与它受欢迎的传授教化社区是密不可分的。

Laravel 拥有一个丰富而充满活力的社区,这里汇聚了从第一天开始就一贯在这里的人和那些第一次到来的人。
一个成功的开源项目须要良好的文档和受欢迎的社区,它们现在都是Laravel 的标志。

PART.

03

Laravel是如何事情的

到目前为止,我在这里所分享的统统都是抽象的。
你可能会问,Laravel 的代码是若何的呢?让我们深入理解一个大略的运用程序(赐教例1),这样你就可以看到在日常事情中,Laravel 实际上是什么样的了。

示例1:在routes/web.php中实现“Hello, World”

<?phpRoute::get('/', function () {return 'Hello, World!';});

在 Laravel 运用程序中,最大略的操作可能便是定义一个路径,并在访问该路径的任何韶光返回结果。
如果在打算机上初始化一个全新的 Laravel 运用程序,在示例 1-1 中定义好路由,然后从公共目录中利用该站点,那么你将拥有一个功能完好的“Hello, World”示例程序(拜会图 1)。

图1 通过Laravel返回“Hello, World!”

PART.

04

利用 Laravel 的缘故原由

那么,为什么利用Laravel?

由于 Laravel 可以帮助你将想法变成现实,并且不会摧残浪费蹂躏代码(即以极精简的代码实现强大的功能),利用当代编码标准,并拥有一个充满活力的社区,还拥有一个强大的工具生态系统。

更由于你,亲爱的开拓者,利用 Laravel 会让你感到快乐!

本文节选自博文视点新书《Laravel入门与实战》(第2版),本书第1版收成了许多读者的好评,第2版迎来Laravel版本升级,覆盖更多前沿内容!

第2版完备涵盖Laravel 5.8版本的内容。
对Laravel框架进行了系统的先容,包括Laravel的背景,Laravel开拓环境的搭建,路由与掌握器,Blade模板,数据库和Eloquent,前端组件,网络和处理用户数据,Artisan和Tinker,用户认证和授权,要求、相应和中间件,容器,测试等知识。

通过阅读这本书,读者可以比较全面地学习并节制Laravel开拓的干系理论知识。
其余,书中涵盖大量实例,有利于读者在学习理论知识的过程中同步进行实践。

▊《Laravel入门与实战(第2版):构建主流PHP运用开拓框架》

[美] Matt,Stauffer(马特 斯托弗) 著

韦玮 译

宇宙至强措辞PHP的“全栈”框架Lavaral迎来升级版前沿、主流、高效、全面!
包含新版本的全面知识点

这是一本实用的Laravel 技能指南,第2 版完备涵盖Laravel 5.8 版本的内容。
本书对Laravel 框架进行了系统的先容,包括Laravel 的背景,Laravel开拓环境的搭建,路由与掌握器,Blade 模板,数据库和Eloquent,前端组件,网络和处理用户数据,Artisan 和Tinker,用户认证和授权,要求、相应和中间件,容器,测试等知识。
通过阅读本书,读者可以比较全面地学习并节制Laravel 开拓的干系理论知识。
其余,书中涵盖大量实例,有利于读者在学习理论知识的过程中同步进行实践。