在动态网页发展前期,编写一个Web应用程序的方法和今天有很大不同。

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

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

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

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”

<?php Route::get('/', function () { return 'Hello, World!'; }); 在 Laravel 应用程序中,最简单的操作可能就是定义一个路径,并在访问该路径的任何时间返回结果。如果在计算机上初始化一个全新的 Laravel 应用程序,在示例 1-1 中定义好路由,然后从公共目录中使用该站点,那么你将拥有一个功能齐全的“Hello, World”示例程序(参见图 1)。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/3071355c7e6b456480f41feca7abecee.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Y2a5paH6KeG54K5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 图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开发的相关理论知识。另外,书中涵盖大量实例,有利于读者在学习理论知识的过程中同步进行实践。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8a3b6e96777c45789437fb82839548a9.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Y2a5paH6KeG54K5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) ▊《Laravel入门与实战(第2版):构建主流PHP应用开发框架》 [美] Matt,Stauffer(马特 斯托弗) 著 韦玮 译 宇宙至强语言PHP的“全栈”框架Lavaral迎来升级版 前沿、主流、高效、全面!包含新版本的全面知识点 这是一本实用的Laravel 技术指南,第2 版完全涵盖Laravel 5.8 版本的内容。本书对Laravel 框架进行了系统的介绍,包括Laravel 的背景,Laravel开发环境的搭建,路由与控制器,Blade 模板,数据库和Eloquent,前端组件,收集和处理用户数据,Artisan 和Tinker,用户认证和授权,请求、响应和中间件,容器,测试等知识。通过阅读本书,读者可以比较全面地学习并掌握Laravel 开发的相关理论知识。另外,书中涵盖大量实例,有利于读者在学习理论知识的过程中同步进行实践。

宇宙最强语言PHP的“全栈”框架——Laravel来了!相关推荐

  1. java play_Play是一个全栈框架

    背景 没有了Spring MVC,你就什么都不会了吗? no no no ! 作为一个工程师你必须了解更多,Play MVC就是是你必备的技能,Play framework非常强大堪比Spring f ...

  2. 分享一款自带工作流引擎的NodeJS全栈框架,接单快手、创业神器

    CabloyJS是什么 CabloyJS是一款自带工作流引擎的Node.js全栈框架, 接单快手.创业神器, 基于koa + egg + vue + framework7 + mysql 在线演示 场 ...

  3. php symfony框架,PHP-Symfony2全栈框架的停用组件

    我想在两种技术的基础上进行新的Web项目:Symfony2用于后端服务器,而AngularJS用于前端(性感,对吗?). 我想将Symfony2服务器作为REST API,这意味着我不需要很多Symf ...

  4. 从 0 到 1 设计、编码、搭建个人知识付费应用(Remix 全栈框架、集成支付和用户、React、TailwindCSS、Prisma)

    感兴趣或者喜欢的请点赞关注我,本文超过 100 个赞正式动工. 变更记录 2022-07-30 初稿,设想提出 2022-07-31 添加需求草稿 系统概述 类似于个人博客系统,可以发布文章.页面及代 ...

  5. 一款自带工作流引擎的Node.js全栈框架,程序员的接单神器

      大家好,我是小编南风吹,每天推荐一个小工具/源码,装满你的收藏夹,让你轻松节省开发效率,实现不加班不熬夜不掉头发!   今天小编推荐一款自带工作流引擎的Node.js全栈框架, 是程序员的接单快手 ...

  6. 区块链游戏项目(战舰游戏)基于layer2区块链技术,使用以太坊的solidity语言, 含全栈完整源码

    这里介绍一个基于区块链以太坊开发的战舰游戏项目.做这个项目的初衷是对layer2区块链技术的proof-of-concept.因此,本项目是一个可以在每一个人的电脑上面执行的demo.为了让大家也能执 ...

  7. 一文讲透CabloyJS全栈框架的来龙去脉

    本文受众 咱们做软件开发,就好比是建造一幢幢房屋,一座座桥梁,既可以是北方宫殿的巍峨,也可以有南方庭院的雅致,更可以是横跨群山的峻险与孤悬.那么,不同的语言.不同的框架也都由其内在的秉质吸引着一批粉丝 ...

  8. 《Web全栈工程师的自我修养》读书笔记

    <Web全栈工程师的自我修养>读书笔记 [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://w ...

  9. 全栈JVM框架Micronaut通向1.0版本之路

    经过一年的发展,随着Object Computing(OCI)发布候选版本RC1.RC2和RC3,Micronaut 1.0在过去三周内加速了.Micronaut是一个基于JVM的全栈框架,用于创建可 ...

最新文章

  1. 大学计算机网络技术考试题,2017年大学生计算机考试的试题
  2. 【大会】AI向多媒体各细分场景渗透
  3. php sqlsrv 分页,Php+SqlServer如何实现分页显示
  4. 流程图中的虚线含义_还在为画流程图烦恼,焦躁?介绍一款画图神器,让你爱上画图!...
  5. webbrowser实现input tab事件_如何合理构造一个Uploader工具类(设计到实现)
  6. Hiberbate中的一对多关联查询
  7. zoj 3640 Help Me Escape (概率dp 递归求期望)
  8. 十大最受欢迎蓝牙耳机品牌推荐,学生党打工人平价蓝牙耳机
  9. [讲课视频]谈谈C/C++中的整数
  10. HTML5 九宫格拼图游戏
  11. 各类杀软对应的进程名
  12. 传感器实验——火焰传感器
  13. 关于VMD相关介绍(二)
  14. ubuntu服务器图形界面崩溃解决方案
  15. 高效办公 1.2 用Python新建Excel文件
  16. 如何对电脑屏幕进行监控?
  17. 史上最全的开源项目创作指南
  18. 什么是GPT模型,GPT下载和国内镜像
  19. 【信息汇总】重庆理工大学计算机考研
  20. 老男孩python第14期_python学习之老男孩python全栈第九期_day014知识点总结

热门文章

  1. matlab小波分析毕业设计,基于matlab的小波去噪分析毕业论文
  2. 『并查集及其拓展运用』
  3. 选择JIRA的88个理由
  4. 热血江湖自动上号工具
  5. 今阶段面试笔试常见问题总结
  6. Halcon例程解析——3d_coordinates.hdev
  7. php函数前加amp;,php函数定义与函数amp;引用用法_PHP教程
  8. android 工具箱
  9. 深入理解深度学习——用Embedding处理分类特征
  10. 华东理工《文献检索》MOOC (1)---精通中国知网CNKI