Getting Started With Laravel 5.0

这两天开始学习laravel 5.0框架,以前用过ThinkPHP&CI框架,觉得laravel很不一样。
最直观的感受是它上手很难,它的运行机制比较难以理解,需要很深入的学习。
我其实很不推荐新手来学习这个框架,如果只是觉得laravel很流行,而自己对网站开发整套体系还不是很了解,对MVC结构理解不深的情况下,千万不要用它。因为这很难,你不得不花费很多时间去学习和框架无关的PHP知识,因为Laravel用到了非常多PHP的新特性。
我的建议是:

先学习TP、CI或者YII框架,他们比较简单,中文资料很多,而且国内用的很多,能够找到基于这两个框架构建的项目的源码也很多。学习它们能加深你对开发流程的理解,等用熟了再来学习Laravel不迟。(Laravel中文资料目前很少)

希望我的学习经验能帮助到大家,如果有任何问题,请及时指正,谢谢。
本文不对细节进行讲解


安装环境

  • 用composer安装Laravel
    和CI以及TP很不一样的地方,laravel是用composer安装的,不像TP&CI直接去官网下载一个ZIP包解压到项目目录即可。由于以前没有用过composer,所以不得不学习下composer。
    当然现在发现,composer其实就是PHP版的bower,bower是安装js文件而composer安装的则是PHP文件。
    laravel为什么要用composer来安装
    看看安装过程中屏幕的输出可能大致就明白了。我的理解是,laravel框架很多模块并没有自己来造轮子,而是引用了其它框架的实现,比如symfony封装的某些class就被laravel拿过来用了。所以项目需要依赖于其它的某些PHP文件,这样的话用composer来进行管理就很方便了,要是symfony更新了某些被用到的class,我们是不是就能同步更新了呢?

  • 安装homestead
    官方文档推荐使用homestead,因为它封装了php5.6 mysql memcache redis nodejs nginx..还做了一些有用的配置,看起来非常爽啊。我立刻就去试了下,结果这一去,花费了我不少时间啊……不过收获还是不小的。要介绍homestead不得不先说说它的基础vagrant
    homestead
    假设你有一台windows的机器,但是你要用linux,你应该怎么办?显然是安装一个虚拟机啦(假设是virtualbox)!安装好虚拟机我们去下载一个linux的镜像然后在虚拟机里载入这个镜像,就可以在虚拟机里运行linux了。以上相信大家都做过,然后进到虚拟机,一切都是新的,下载PHP、mysql、nginx、node然后安装配置……这是一个相当痛苦而漫长的过程。homestead其实就是laravel官方帮你配置好了的linux(ubuntu)系统,里面安装了它说的那些东西,所以你通过虚拟机运行homestead就相当于运行了一个配置好的直接可以进行开发的ubuntu系统。
    vagrant
    要安装homestead,你必须使用vagrant。vagrant是一个强大的工具,我只会它简单的功能,所以我暂且把它同样类比成一个包管理工具,像composer管理php文件bower管理js文件一样,vagrant用来管理虚拟机可以载入的操作系统镜像。比如你想要做JAVA的开发而觉得搭建环境是一件蛋疼的事情,你可以去镜像仓库搜别人已经配置好的系统直接用。homestead就是laravel官方封装的一个系统,所以相信你现在应该大概了解homestead和vagrant的概念了。用vagrant还有一个非常重要的场合,就是团队开发。你需要你团队里的人都使用相同的开发环境和配置,所以你可以用vagrant配置好一个系统,团队成员只需要几个简单的命令就能安装好了。当然把vagrant类比成包管理工具似乎不够公平,因为它还有很多功能我并不知道……感兴趣你可以到vagrant官网看看。
    细节问题
    按照上面的说法,我安装vagrant然后通过vagrant来安装了homestead,但是为什么文档里还要我去github克隆一个东西然后运行一个脚本呢?简单讲:vagrant可以通过一个配置文件来修改homestead中的某些配置,这其实是vagrant强大的地方,因为如果开发团队需要修改开发环境,只需要leader配置下这个文件,然后队员们同步这个配置文件就好了。所以文档要你克隆的内容,其实就是vagrant去修改homestead的配置文件,它设置了nginx的web目录和一些额外的东西。具体你可以自己看,我只告诉你这是什么以及用来干什么的就好了。

  • VIM配置
    homestead并没有配置出一个良好的适合开发的VIM,所以你还需要自己配置下VIM。为此我也花了将近一天的时间来学习。这篇VIM教程写得非常好,详细讲了如何把VIM配置成一个IDE的过程,并告诉了你这些配置到底是干嘛的。相信你看完之后会受益匪浅。


创建Laravel

如果你看了上面的内容并加以简单地学习,相信你已经花费了不少时间,这正是我不推荐新手学习Laravel的原因,但我相信你肯定受益匪浅。接下来才开始我们的正题

想再次说一下,我并不想写一篇关于如何一步一步开发一个Laravel项目的文章,我只是介绍我学习的经历,并把一些我的理解记下来。所以很多地方具体怎么做我不会写了,文档里很清楚,你只需要跟着一步一步做就好了。
以下我假设你已经安装好Laravel,配置好nginx,并尝试过它自带的登陆注册功能了

  • Laravel运行的流程
    我学习一个框架喜欢先了解它是怎么运行的,所以并没有按照文档的顺序去看,也不推荐大家这么做。那么怎样才能快速地了解一个框架的运行流程呢?首先你还是得对框架有一个最基本的了解,怎么才算有一个最基本的了解呢?你需要实现这样一个功能,当访问localhost/hello的时候在页面上能输出hello Laravel这个字符串。简答吧?你可以看看文档中路由部分然后迅速能实现这个功能。接下来,我要介绍一个函数debug_print_backtrace
    debug_print_backtrace
    可能很多小伙伴们并不知道这个函数,但不得不说这是一个能快速帮助你学习框架和融入新项目的函数。它的作用是在页面上打印出调用栈,换句话讲就是整个项目执行到debug_print_backtrace这条语句之前都依次调用了哪些类和方法。怎么样,是不是感觉很强大?具体的说明可以看这里
    debug_backtrace
    此函数和上面的函数只差了个print,所以你应该能猜到,这个函数并不会立即打印,而是把要打印的内容返回。因为debug_print_backtrace打印的内容很乱,所以我推荐如下写法
    //主要代码
    $str = debug_backtrace();
    var_dump($str);

    那效果就是如下
    屏幕快照 2015-04-06 下午11.17.15.png
    可以看到,从项目入口文件index.php到最终执行到路由里调试输出语句,一个调用了31个类方法。所以整个流程是非常复杂的……
    大家有兴趣可以看看index.phpconfig/app.php,compiled.php有1万7千多行,我不建议你刚开始就去阅读……
    概括的流程
    最概括地讲,Laravel的项目是这样的:
    用户发送http请求<-->nginx<-->index.php
    index.php是整个项目的入口,它干的事情依次是

    • 载入autoload
    • 载入应用的实例
    • 捕获http请求
    • 把http请求当成参数传递给handle方法
    • 获取haddle方法的返回(也就是你的应用对此请求处理的最终结果)并返回给客户端
    • 做一些收尾工作

今天太晚了,接下来的内容有时间我会尽快更新。

本帖已被设为精华帖!
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 10
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!