解决了类自动加载的问题,剩下的问题就是看文档了,laravel的官方文档虽然简单,但是却包含了很多基础知识,学习Laravel最好先看看官方文档,我感觉帮助很大,因为laravel框架的源码看起来并不容易,一层一层的套,看文档会快一些,如果想更详细的了解,可以考虑研究源码。

    考虑到laravel框架的复杂性,最好不要使用编辑器,要用IDE来开发,因为IDE可以调试、跳转到类声明文件等等,还包括一些自动完成的功能。不过如果坚持要使用编辑器,推荐用sublime,常见的IDE有Netbeans、PHPEclipse、Aptana、ZendStudio、PHPStorm,其中ZendStudio、PHPStorm是收费软件,如果有钱是更好的选择,如果注重版权,可以考虑Netbeans、PHPEclipse、Aptana,PHPEclipse和Aptana比较类似,我比较喜欢Netbeans和Aptana,它们都能提供语法加亮、代码提示、调试、版本管理方面的支持,使用上都差不多,我选择了Netbeans,因为Netbeans支持采用PHP内建的web服务器,对于开始一个新项目很方便,适合初学者,也可以选择Aptana,只是麻烦一些,需要修改Apache配置文件,增加一个虚拟主机。
    在使用IDE之前最好增加IDE支持,因为常见的IDE无法理解Laravel的Facades的工作方式(不仅IDE不懂,我也没看懂),barryvdh开发了一个IDE-Helper工具,配置过程也比较简单,官网很详细,这里做个备注:
    1)修改composer.json的内容如下
         在require下增加 "barryvdh/laravel-ide-helper": "1.*"
         然后在laravel根目录(composer.json所在目录)运行composer update,
         或者直接运行:composer require barryvdh/laravel-ide-helper: 1.*
         运行结束之后会在vendor目录下增加一个barrayvdh的目录。
    2)在app/config/app.php中providers数组增加一行:
       'Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider',
    3)现在其实已经可以代码提示了,但是如果增加了新的组件,需要手工运行
       php artisan clear-compiled
       php artisan ide-helper:generate
       也可以每次更新都自动生成,在composer.json中script->post-update-cmd下修改,增加如下
   "post-update-cmd": [
   "php artisan clear-compiled",
   "php artisan ide-helper:generate",
   "php artisan optimize"
  ],     
    这样就可以使用自动提示了,而且可以看一下laravel根目录下自动生成的_ide-helper.php文件,可以看到很多类的相互关系,挺不错的,比如在routes.php中Route,根据_ide-helper.php,可以知道Route对应的是\Illuminate\Routing\Router,根据vendor/composer/autoload_classmap.php文件的对应关系,可以知道,对应的是vendor/laravel/framework/src/Illuminate/Routing/Router.php。Netbeans的代码跳转往往也是跳到_ide-helper.php文件。
    如果对PHP很熟悉,学习框架就非常简单了,如果不是很熟悉,推荐手头放一本PHP参考书备查,我觉的LAMP兄弟连的《细说PHP》不错,如果经常使用,建议买一本。

    根据官方文档,一个请求的生命周期如下:
    1)请求进入public/index.php文件,如果使用Apache服务器,会读取根目录的.htaccess文件,调用重写功能,不需要输入index.php,就可以调用了,不过在虚拟目录的情况下,就得写index.php才行。
    2)调用bootstrap/start.php文件,创建应用(Illuminate\Foundation\Application)并检查环境
    3)调用framework/start.php,路径为\vendor\laravel\framework\src\Illuminate\Foundation\start.php 
    4)装载app/start目录下的global.php、artisan.php、local.php
    5)装载app/routes.php
    6)将Request对象发给Application,处理之后返回Response对象
    7)将Response对象返回到client
    这个过程比较复杂,注意上面的“装载”、"调用"都是"require"的意思。但大部分内容我们不需要管,首先需要了解的是app/routes.php,这个是laravel的核心功能,会将你的请求转到对应的资源上,如显示页面的php文件、控制器(php)文件等。
    对于开发人员来数,需要注意的是routes.php,这个文件代表了每一个浏览器发出的请求最终调用的php程序,这一点其实和Java的MVC类似,PHP可以做到这种程度让我有点惊讶。不过是好事情,意味着学习起来会比较容易。
    routes.php中的路由调度常见的有一下模式
    Route::get('/',function(){
        return View::make('hello');        
    });
   这里需要注意一下,Route实际上对应的是vendor/laravel/framework/src/Illuminate/Routing/Router.php,其中的/代表的是虚拟路径,get代表请求方式,还可以是post方式,或者any(任意方式),View::make('hello')代表路由目标为app/view/hello.php,指向其他的文件,依此类推就可以了。
    通常我们在转向新的页面的时候,需要携带一些对象或者数组过去,也很容易,只要
    return View::make("hello")-)with('user',$user)->with('student',$student)
    在新的页面调用只要直接调用$user,$student就可以了。
    上面的路由是最简单的方式,如果在到达新的页面之前需要更多的逻辑计算,就需要逻辑放到Controller类中,这样会让routes.php较为简洁,当然Controller类中的逻辑如果过于复杂,也可以将逻辑分出来,比如业务逻辑较为复杂,可以将业务逻辑保存在其他的php文件,比如建立一个business目录,用来保存商业逻辑。要记住将business目录加入到composer.json的autoload下,才能自动被加载,被其他php文件调用。
     所有的Controller类都要是BaseController的子类,BaseController位于/app/controller目录下,路由调用方式如下
     Route::get('user/profile', array('as' => 'profile', 'uses' => 'UserController@showProfile'));
   这里需要注意的是路由user/profile,指向目标为Controller类UserController的方法showProfile,profile是路由的名称,在其他地方可以使用这个名字,跳转到UserController的showProfile方法。
   一般来说,知道这些就可以进行开发了,如果想知道更多,可以参考官方文档,包括路由加参数,如user/profile/1这种方式,过滤器等。
  

Laravel学习笔记(二)的更多相关文章

  1. laravel学习笔记(二)

    路由 HTTP方法:支持http1.1中所有类型传参方式,get,post,put,delete,options,patch Route::get($url,$callback); 路由参数: Rou ...

  2. laravel学习笔记二

    代码编写提示工具

  3. Laravel学习笔记之Session源码解析(上)

    说明:本文主要通过学习Laravel的session源码学习Laravel是如何设计session的,将自己的学习心得分享出来,希望对别人有所帮助.Laravel在web middleware中定义了 ...

  4. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  5. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  6. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  7. JMX学习笔记(二)-Notification

    Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...

  8. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  9. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  10. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

随机推荐

  1. Ubuntu Server无线上网

    在自己电脑上装个Ubuntu Server,需要连接无线上网,参照附录的两个连接完成. 重置的自己路由器,只是为了找ssid和密码 配置步骤: 1. 生成无线上网密码配置文件 root@Ubuntu: ...

  2. (11.20)Java小知识!

      经过一段时间的学习,我也终于来到了Java语言的核心篇,也就是对象与类的学习,今天想要和大家分享的是关于类的小知识点. 1.类的声明: 类可以看成创建Java对象的模板.类亦可以理解成Java一种 ...

  3. python 实用案例 supervisord管理进程详解

    Supervisor是由python语言编写,基于linux操作系统的一款服务器管理工具,用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能.Supervisor类似于monit,monit ...

  4. CTF 文件包含与伪协议

    正巧在写代码审计的文章,无意间看到了一篇CTF的代码审计,CTF题目很好,用的姿势正如标题,文件包含和伪协议. 先放出原文链接(http://www.freebuf.com/column/150028 ...

  5. 一个Win32API Trace Tool的设计与实现

    用VC编程也有不短的时间了,对kernel32.advapi32.user32.gdi32等动态库里的API多数都已经很熟悉了.API是操作系统提供给应用程序的一组服务,很久以前就想要做个小工具,用来 ...

  6. Transform组件以及相关API

    Transform.Translate(Vector3,Space):以自身坐标系或者世界坐标系向某个方向移动物体. Vector3:表示方向和移动的距离. Space:空间.枚举类型,用来确定坐标系 ...

  7. Nginx简介与安装

    | 简介 Nginx是一个高性能的HTTP和反向代理服务器,可以作为负载均衡服务器,也是一个IMAP/POP3/SMTP服务器.它的特点是占有内存少,并发能力强.目前有很多大型公司都在使用Nginx, ...

  8. MFC中小笔记

    主要记录下一些有啊没啊的MFC东西. 1.单文档 去掉 无标题:在玩的时候用于FindWindow(class,title) BOOL CMainFrame::PreCreateWindow(CREA ...

  9. Android OpenGL ES 开发(一): OpenGL ES 介绍

    简介OpenGL ES 谈到OpenGL ES,首先我们应该先去了解一下Android的基本架构,基本架构下图: 在这里我们可以找到Libraries里面有我们目前要接触的库,即OpenGL ES. ...

  10. IntelliJ IDEA(二) :面板介绍

    一.面板说明 IDEA面板的全貌如下图 二.菜单栏 下面会简单介绍下一些常用的部分菜单使用,如有疑问或补充欢迎留言. (1).File文件 1. New:新建一个工程 可以新建project,导入已存 ...