Laravel學習筆記(二)

    解決了類自動加載的問題,剩下的問題就是看文檔了,laravel的官方文檔雖然簡單,可是卻包含了不少基礎知識,學習Laravel最好先看看官方文檔,我感受幫助很大,由於laravel框架的源碼看起來並不容易,一層一層的套,看文檔會快一些,若是想更詳細的瞭解,能夠考慮研究源碼。php

    考慮到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這種方式,過濾器等。
相關文章
相關標籤/搜索