热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

「Laravel系列1」进入Laravel的世界

TP框架在5.x版本的时候,基本就像是一个Laravel的翻版,而6.x系列还没有详细的看过,不过总体的思想其实都是和Laravel很接近的。我们不能说TP或者Yii不好,而且还应该多多支持TP这样的优秀国产开源框架。

欢迎来到 Laravel 系列文章的学习。从这篇文章开始,我们开始进入到 PHP 框架 相关的学习中。在这其中,我们主要学习的就是 Laravel 框架,那么为什么是 Laravel 呢?明明 TP 、 Yii 也是很多人在使用的呀。

为什么是 Laravel

一说到 PHP 的框架,三巨头是绕不开的,也就是 ThinkPHP 、Yii 以及我们马上要学习的主角 Laravel 。当然,还有 CodeIgniter CakePHP 以及大名鼎鼎的 Zend Framework 等等非常多的优秀框架。但是,从当前的市场环境来看,Laravel 框架是绝对的主流。TP 框架在 5.x 版本的时候,基本就像是一个 Laravel 的翻版,而 6.x 系列还没有详细的看过,不过总体的思想其实都是和 Laravel 很接近的。

就像语言的互相借鉴融合一样,框架之间也是这样的。我们不能说 TP 或者 Yii 不好,而且还应该多多支持 TP 这样的优秀国产开源框架。但是他们确实在慢慢地向 Laravel 中的很多思想靠拢。所以,我们一次到位,直接来学习 Laravel 框架,同时也能加深我们对 TP 以及其它框架的理解。

顺便说说我使用过的其它框架吧,在 TP 的 3.x 时期,使用过 TP 做过不少小网站,方便,简洁,确实很好用,国人能做出这么优秀的框架其实在当时来看也是很难得的。即使到现在来说,TP 也是除了 Laravel 之外在国内影响力最大的框架。Yii 在之前还是在一家公司用过2、3年,当时是 1.6 版本的,之后换了一家公司也继续使用过 2.0 版本的用了很长一段时间。不得不提的是,Yii 框架虽然说是由不少老外维护的,但其核心创始人也是我们中国人。加上鸟哥的 Yaf 之类的框架,我们国人在 PHP 领域中的贡献还真是不少的。除了这两个之外,目前使用的项目中,还用到了 Swoole 和 Hyperf ,这两个一个是扩展框架,一个是基于 Swoole 的 MVC 框架,同样也都是我们中国人开发的。

不过, Swoole 相关的框架就不在我们这个系列的学习讨论中了,以后再开专门的系列文章来进行学习。

话说回来,除了上面比较出名的之外,我还在实际的项目中接触及使用过 CodeIgniter 以及 CakePHP ,不过都是很早之前了。如果从路线图来说的话,那么我接触框架的顺序是这样的:Cake -> CodeIgniter -> TP -> Yii -> Laravel -> Hyperf 。目前在工作使用的,正是 Laravel 和 Hyperf 。

注:Hyperf 中很多东西也有 Laravel 的影子,甚至很多内容是可以无缝迁移的。

Laravel 优雅吗?

“优雅”这个词,一直就是 Laravel 对外宣传的标语。确实优雅,最开始学习它的 源码 时,我就深刻的感觉到这人是不是 Java 转过来的,各种 Java 中的写代码的方式放到了 PHP 中,各种设计模式在这个框架中进行了应用。不过,就像前面说过的一样,各种语言的融合, 软件工程 的发展,让这些东西都不是某个语言的特定功能,而是所有语言都拥有的。

我们知道,PHP 这种动态语言的最大特点就是上手快,但是,精深难。网上的段子是 PHP 的水货一大堆,水平无下限。而 Java 这种静态语言以及很早确立的各类规范让 Java 程序员的下限控制得很好。也就是说,不管你写得多烂,起码是有下限的。而在 PHP 中,一旦工程乱了起来,很多代码就会变得没有下限了,这个有时候还真不是你的水平能决定代码质量了。即使是水平非常高的 PHP 程序员,也很容易写出各种迷惑代码出来。

而 Laravel ,正是为了解决这个问题,将你的代码规范起来。或者说,在底层上,代码是很规范的,至于上层代码怎么样,就看你能不能有自己的规范了。当然,我们也不能忽略 PSR 系列规范的作用。当然,现代的框架也基本都是遵循 PHP 的 PSR 规范的。

然而,优雅的代价就是 速度 。这也是 Laravel 学习中绕不开的一个话题。在 Laravel 中,底层还有一个 Symfony2 框架。最底层的基础功能其实在 Laravel 中又是调用了这个底层的 Symfony 2 框架,也可以说,Laravel 是对 Symfony2 的又一次优雅的封装。这种情况下,速度能快起来也是不太可能了。网上有各种框架之间速度的对比,大家可以自行查阅。

因此,在实际的项目开发中,我们经常使用 Laravel 来进行后台功能的开发,而如果是前端需要应对大量的请求并发时,一般不太会采用 Laravel 框架。当然,并不是说不能用,在一系列的优化以及开启 OpenCache 的情况下,Laravel 也是很能顶的,毕竟大部分项目和大部分公司,能到 500 并发量的都是少数。

学习 Laravel

学习 Laravel 前,建议先看看我之前的 【PHP设计模式】 相关的系列视频和文章。这个是重点中的重点。

其次,本机 测试环境 调试好 xdebug ,网上也有很多文章是讲怎么配 PHPStrom 或者 VSCode 进行断点调试的,这个东西也很重要,对于任何框架的学习来说,这玩意都非常有用。

最后,跟着撸,这个是编程学习的通用法宝,当然,撸的同时一些基础知识也最好理解掌握下来,不行就背下来,面试的时候不会亏。

总结

好了,第一篇文章轻松些,同时这些也是我对 Laravel 的一个简单的理解。有兴趣的小伙伴可以再去官方文档更深入地了解一下 Laravel 的整个发展历史,也可以更加深入的查阅一下 Laravel 和其它框架之间的一些区别与联系。我们学习的主要目的还是深入的学习 Laravel 框架的使用以及对部分源码的剖析。

当然,水平有限,之后文章中的纰漏也在所难免,也欢迎大家随时监督反馈。


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • redis 获取不到_redis 缓存锁的实现方法
    1.redis加锁分类redis能用的的加锁命令分表是INCR、SETNX、SET2.第一种锁命令INCR这种加锁的思路是,key不存在,那么key的值 ... [详细]
  • php在哪里好找工作(php学到什么程度可以找到工作)
    导读:本篇文章编程笔记来给大家介绍有关php在哪里好找工作的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、php去哪个城 ... [详细]
  • php技术不好干什么工作(2023年最新分享)
    导读:很多朋友问到关于php技术不好干什么工作的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • java线条处理技术_Java使用GUI绘制线条的示例
    在Java的GUI编程中,如何使用GUI绘制线条?以下示例演示了如何使用Graphics2D类的Line2D对象的draw()方法作为参数来绘制一条线。 ... [详细]
  • JavaScript实现拖动对话框效果
    原标题:JavaScript实现拖动对话框效果代码实现:<!DOCTYPEhtml><htmllan ... [详细]
  • yii框架目录结构详细分析说明
    php教程|php手册yii,目录结构php教程-php手册yii框架目录结构详细分析说明猫狗大战源码,华为云电脑ubuntu,梦见放走很多爬虫,parttmpphp,seo页面描 ... [详细]
  • php怎么做rpc通信(RPC通信)
    导读:很多朋友问到关于php怎么做rpc通信的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • clion永久激活(注册激活)
    (clion永久激活)好多小伙伴总是说激活码老是失效,太麻烦,关注收藏云海太难教程,2021永久激活的方法等着你。https:www.yht7.comideaIntelliJ202 ... [详细]
  • 安装flume
    解压flume压缩包到指定目录内:tar-zxvfflume-n ... [详细]
author-avatar
hfdljflkd_863
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有