Laravel学习分享(1) :入门篇

前言

笔者是从今年开始接触Laravel框架的,在阅读了Lavarel的开发文档后,自己也写了一些小样例,同时也参与了基于Lavarel的项目开发。在对Laravel了解熟悉的过程中,渐渐无法自拔的迷恋上这个框架,他的某些设计和实现着实惹人喜爱。

在此推荐还不了解此框架的php爱好者可以去Laravel官网学习下,下面我将分享一点自己学习的心得和启发,希望可以和感兴趣的朋友多交流学习。

Lavarel样例分享

本篇虽然是Laravel的入门介绍,但此处并不会详细介绍Laravel中的概念。因为这些概念在官方文档上都有十分详细的说明,个人建议感兴趣的朋友可以一边阅读文档,一边调试样例程序。这里分享个git上的基于laravel5.1 版本的项目样例,朋友们可以clone到本地,参照文档搭建Lavarel的开发环境,然后就可以基于文档和样例学习调试Lavarel框架啦。

个人心得和启发

下面将和大家分享我接触Laravel框架后的心得,希望可以给这方面经验不足的朋友一点帮助和启发,也希望大神看到后可以指出分享中的不足之处,共同学习和进步。

  • 首先不得不提的是Lavarel服务容器的实现,它是一个管理类依赖和执行依赖注入的强大工具。最近依赖注入和控制反转的概念持续火热,感兴趣的朋友可以看下这篇来自segmentfault社区的文章:PHP程序员如何理解IoC/DI,以及其他相关文章。其主要思想就是将被调用类的依赖注入到调用类中,Lavarel通过构造方法或set方法实现注入,我们可以动态的绑定接口到实现。依赖注入突出的优点在于降低了代码的耦合,我们不用自己手动去new一个被调用的类,容器将在我们需要的时候将它初始化。

关于容器以及依赖注入我这里不再给出代码样例说明,推荐的地址有更详细的解释。但是这的确是很进步的思想,相较于使用时就new一个类的传统实现而言,这个想法是很创新的。推荐大家去了解和熟悉这样的思想以及探索Lavarel对它的应用。虽然传统的方法也没有什么致命的问题,但是当你熟悉以及习惯这样的实现后,自然会发现它的美妙之处。

  • Laravel中的Eloquent ORM对于数据库的操作也十分迷人。Lavarel中提供了与数据表交互的模型,替代基于完整sql的操作。简单定义模型后(确定表名,主键以及此表是否需要打上时间戳),就可以方便的实现对表的操作。下面我们看两个基于这些查询构造器的查询样例:

    $flights = App\Flight::where('active', 1)
                   ->orderBy('name', 'desc')
                   ->take(10)
                   ->get();
    

    这个语句表明需要查询表中active值为1的数据(在参数'active',1之间可以添加'>','<'等操作符,默认为=),根据name字段倒序排序,获取前10条数据。当我们在熟悉了这样的使用后很可能会爱上这样的操作,它不仅将我们的查询需求展示的非常清晰,而且也非常便于修改。这里设计的关键词也非常贴心,比如where,很容易对应到我们sql中的where查询,orderBy对应order by,take(10)表示我们获取10条数据,这样的关键词对应可以加快我们对它的掌握。

    对于更新的操作也是一目了然:

    App\Flight::where('active', 1)
       ->where('destination', 'San Diego')
       ->update(['delayed' => 1]);
    

    当然,这样的操作也不是完美的,肯定也是存在使用这种方式比较繁琐的sql操作。Laravel中自然也提供了基于完整sql的查询方式,如:

    $users = DB::select('select * from users where active = ?', [1]);
    

    有一点想提醒大家注意下,Laravel中查询数据库返回的每一个数据项是实例而不是数组,可以通过toArray(),转化为数组继续操作。

  • Lavarel提供了强大的Monolog日志库,支持debug、info、notice、warning、error等多种日志级别(用RFC 5424标准)。在开发中记录错误日志是非常非常必要的,此前我们开发个别项目的时候不够重视日志,只在重要的地方设置监控点投递redis,但是这基本无法满足我们的调试和排错需求。有些线上问题无法快速定位到问题所在,甚至需要回滚代码,代价比较严重。

    我们使用Laravel的时候,体会到它强大的日志功能,以及详细的日志带来的好处:可以快速定位到问题产生的位置并且在90%情况下直接找到发生问题的原因。所以希望大家在开发的过程中一定要养成记录日志的习惯。其中在开发阶段可以设置日志模式为debug,详细的调试。在线上则可以设置为error,记录错误日志的同时也避免产生过多的日志记录造成日志服务器的压力。

  • Laravel框架也是典型的mvc模式,相信大部分人对这个模式都很熟悉。这里我想分享一个小细节,就是在Laravel中,我们可以让控制器负责交互数据,model用于配置数据交互模型,单独再抽离一个层用于业务逻辑处理,这样可以使业务流程和逻辑更加清晰。

写在最后

本次主要分享的是Lavarel使用过程中的一些心得。在这里真心希望感兴趣的朋友可以熟悉下这个框架,一起交流学习。我会继续整理和分享关于Lavarel以及其他方面的学习心得,希望可以和大家一起进步。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容