博文视点Broadview 潜水
  • 1发帖数
  • 1主题数
  • 0关注数
  • 0粉丝
开启左侧

宇宙最强语言PHP的“全栈”框架——Laravel来了

[复制链接]
博文视点Broadview 发表于 2021-9-30 09:33:51 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
在动态网页发展前期,编写一个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”

精彩评论9

风云杭州 发表于 2021-9-30 17:46:45 | 显示全部楼层
国内还是tp用的人更多吧
旧时初梦849 发表于 2021-9-30 15:09:23 | 显示全部楼层
我也在用laravel 必须点赞
和蔼的斗牛士 发表于 2021-9-30 12:50:31 | 显示全部楼层
不错的框架,搞个小东西很快
李惟levi 发表于 2021-10-1 00:54:04 | 显示全部楼层
laravel已经到8.0了,这本书还停留在5.8……
心机之蛙一直摸你肚子 发表于 2021-9-30 11:32:10 | 显示全部楼层
都快夕阳语言了[呆无辜]
雨中磐石啦 发表于 2021-10-1 15:55:03 | 显示全部楼层
太肿瘤了,一个包上百兆
懒惰的大甲虫 发表于 2021-9-30 14:12:38 | 显示全部楼层
跟优雅,用着很舒服
宏村阿木 发表于 2021-10-2 01:58:25 | 显示全部楼层
太复杂了
堪笑 发表于 2021-10-1 18:41:38 | 显示全部楼层
tp,ci,laravel,phalcon,symfony
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
在线客服邮箱
wxcy#wkgb.net

邮箱地址#换为@

Powered by 创意电子 ©2018-现在 专注资源实战分享源码下载站联盟商城