资讯专栏INFORMATION COLUMN

使用 Laravel 框架开发是什么样的体验

Miracle_lihb / 1369人阅读

摘要:但也因为应有尽有使得框架的性能比其他高性能框架低了些,为此给了几个解决方案路由缓存经有关部门研究,路由缓存可有效加快访问速度以上。有朋友说框架最重要的东西是路由,我倒认为最重要的是框架中异于其他框架且能解决痛点的东西,如的。

在程序界的远古时期,大神们手持键盘敲着机器语言跟庞大的机器打着交道,那时候机器语言还没有语义和语法,更没有封装的概念。后来进化到汇编语言,C语言时期,基础的功能特性就已经能满足当时的需求了,比如函数封装使其得于复用,但随着计算机的普及,操作系统的到来,面向过程语言已无法继续满足复杂的需求。

历史的变迁促使了高级语言的诞生,到了我们这个阶段,已经是高级语言百花齐放的时代,Java、Python、Ruby、PHP、Javascript、Objective-C、Android 等等都在各自领域中发挥着重要的作用。而各大语言的框架更是集自身语言和其他优秀语言特性之大成者,以PHP来说,Laravel、Symfony、CodeIgniter、ThinkPHP 等都是其优秀的思想结晶之一,其中的 Laravel 就是其创始人 Taylor Otwell 结合了 Ruby on Rails 的思想开发出来的,并且以强大的框架生态和组件化思想成为全世界最热门的PHP框架没有之一。

随着近两年中文文档的完善,Laravel 渐渐被国内的开发者所使用,去年我们开始采用「组件化」思路来建设整个服务,业务重构选择了 Laravel 来作为后端的业务框架,到现在已经一年时间,我对 Laravel 框架也有了一些了解,从路由到单元测试,Laravel 几乎无所不能,它不局限于“神圣”的MVC模式,让开发者发挥自己的想象力去搭建自己想要的业务架构,不用再想着什么类要放在Model文件夹,而是怎么划分层次,每个层次需要干什么,就像是乐高积木,你可以根据图纸或者自己想象出的变形金刚的样子一层层的搭建出最后的模型。

在 Laravel 中,高级积木(组件)可以用 Composer 管理工具来引入,Composer 作为PHP中最好用的依赖管理工具之一(或许没有之一)已经被很多框架使用,就不详述它的故事了。绝大多数的 Laravel 组件都能在 Github 上找到,如果找不到肯定是你的搜索方式有问题,换了搜索方式还找不到,那就自己写一个。Composer 有这么一些常用指令:

composer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖; composer update - 从 composer.json 安装最新扩展包和依赖;

composer update vendor/package - 从 composer.json 或者对应包的配置,并更新到最新;

composer require new/package - 添加安装 new/package, 可以指定版本,如: composer require new/package ~2.5.

我在引入和更新组件时都是使用 composer require ,这样子做的原因是因为在生产环境中使用其他两种方法来引入的话,会把其他组件也给更新了,导致不兼容的情况发生,具体看这篇文章:「正确的 Composer 扩展包安装方法」。

如果是 Composer 的「组件化」让我采用了这个框架来重构,那你就大错特错了,真正让我着迷的是 Laravel 的核心「Ioc容器」,它有效解决了对象依赖的问题,举个栗子:

要实例化一个孩子对象出来,必须要实例化出爸爸对象和妈妈对象,用原本的对象依赖调用方式就是这样的:

$father = new Father();
$mother = new Mother();
$child = new Child($father, $mother);

从编程角度来说,依赖关系越复杂,可变性就会越低,而且这么写等于暴露了三个对象给用户,是不可取的。

从现实角度来看,我只想知道你叫什么名字,你连你爸妈的信息都告诉我了,这......不合适吧。

上面的代码用 Laravel 来写会是这样:

$child = app()->make(‘Child’);

接着 Ioc 就会帮你调用依赖于 Child 的所有类,并且赋予 Child 对象,整个过程只需要一句代码,甚至能更简洁:

$child = app(‘Child’);

Ioc 的好用之处还有很多,基本上 Laravel 的基础服务都是围绕着 Ioc 来搭建的,Router、Middleware、Eloquent ORM等等等等,如果你想感受下 Ioc 的魔力,看源码吧。

在 Ioc 的基础上,各个子系统也有着自己的闪光点,Router 的 RESTful 定义,Eloquent ORM 的预加载查询优化等等让整个框架生态变得多样化和易用。但也因为应有尽有使得框架的性能比其他高性能框架低了些,Laravel 为此给了几个解决方案:

路由缓存;经有关部门研究,路由缓存可有效加快访问速度500ms以上。

源码缓存;把源码集合在一个类中,减少资源调用耗费的时间。

数据查询优化;就是上面提到的 Eloquent ORM 的预加载查询优化。

这些都做了的话,性能不会差到哪里去,我认为中小体量的网站的瓶颈是在数据IO,PHP性能还不用太纠结,如果真达不到你的性能要求,请转用 Lumen 或者其他框架。

有朋友说 PHP 框架最重要的东西是路由,我倒认为最重要的是框架中异于其他框架且能解决痛点的东西,如 Laravel 的 Ioc。让我们改变编程思维是很少框架能做到的,Laravel 能做到这点,正所谓框架常有,好框架难求,如果你问我 Laravel 好不好,是不是最好,我只能用邓小平爷爷的名言告诉你:

不管黑猫白猫,捉到老鼠就是好猫。

点此查看我的更多文章。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21800.html

相关文章

  • Lumen 初体验(二)

    摘要:的现状目前是版本,是基于开发。入口文件启动文件和配置文件框架的入口文件是。在路由中指定控制器类必须写全命名空间,不然会提示找不到类。目前支持四种数据库系统以及。使用时发生错误,因为在文件中,的默认驱动是。 最近使用 Lumen 做了 2 个业余项目,特此记录和分享一下。 Lumen 的介绍 在使用一项新的技术时,了解其应用场景是首要的事情。 Lumen 的口号:为速度而生的 La...

    Cheriselalala 评论0 收藏0
  • Laravel+Apicloud+Vue开发混合式App系列】第0集

    摘要:关于作者程序开发人员,不拘泥于语言与技术,目前主要从事和前端开发,使用和,端使用混合式开发。个人网站最近刚写了一个手机在线播放的电影站开发混合式系列第集技术选型是一套简洁优雅的开发框架。 关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发。合适和够用是最完美的追求。 个人网站:http://...

    Corwien 评论0 收藏0
  • Laravel+Apicloud+Vue开发混合式App系列】第0集

    摘要:关于作者程序开发人员,不拘泥于语言与技术,目前主要从事和前端开发,使用和,端使用混合式开发。个人网站最近刚写了一个手机在线播放的电影站开发混合式系列第集技术选型是一套简洁优雅的开发框架。 关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发。合适和够用是最完美的追求。 个人网站:http://...

    adie 评论0 收藏0
  • [译] 使用 PHPStorm 开发 Laravel 应用

    摘要:很多程序员使用创建他们的应用程序。是一个免费开源的应用程序框架。是的模板语言,对艺术家友好,这个程序员的命令行工具可以在中工作使用插件和帮助器我们可以进一步扩展对应用的支持。 很多PHP程序员使用 [laravel] 创建他们的应用程序。[laravel] 是一个免费开源的PHP web应用程序框架。它基于多个Symfony 组件,提供了一个开发框架,包括authentication,...

    buildupchao 评论0 收藏0
  • Lumen 初体验

    摘要:介绍为速度而生的框架。是官方给出的例子,直接拷贝命名为。一般来说,我们应该避免使用末尾带斜杠的。因为它如果找不到文件,就会自动在末尾加个斜杠,尝试寻找目录下的文件等等,具体是在中配置。方案修改修改的配置文件,将指向重启。 介绍 Lumen:为速度而生的 Laravel 框架。 Lumen 是 Laravel 的作者(Taylor Otwell)的又一力作。简单、快速、优雅的它的特点...

    Leck1e 评论0 收藏0

发表评论

0条评论

Miracle_lihb

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<