【Laravel】Laravel 框架關鍵技術解析·讀書筆記(二)

Laravel 框架關鍵技術解析·讀書筆記(二)

第五章
  • 框架應用程序根目錄(5.1版本)php

    默認的Laravel框架應用程序是符合PSR規範的,因此相應的目錄結構也是基本固定的,不一樣的目錄加載了功能文件,若是添加了新的目錄,須要在composer.json文件中添加PSR規範的自動加載部分並執行update命令。laravel

    • App: 主要包括應用程序的核心代碼,用戶構建應用的大部分工做都在app目錄下進行,包括路由文件、控制文件、模型文件等。
    • bootstrap:主要包含幾個框架啓動和自動加載配置文件
    • config:主要包含應用程序經常使用的配置文件信息
    • database:主要包含數據庫遷移和數據庫填充文件。
    • public :應用程序的入口文件,包含應用程序入口文件index.php,同時包含靜態資源文件如CSS,JavaScript,images等。
    • resource:主要包含視圖文件。
    • storage:包含編譯後的blade模板,基於文件的session,文件緩存和日誌文件等。
    • tests:主要包含自動化測試文件。
    • vendor:主要包含依賴庫文件,其中包括框架源代碼
    • .env:一個重要的文件,爲Laravel框架的主配置文件。
    • composer.json:composer項目依賴管理工具
  • app目錄正則表達式

    應用程序的大部份內容都存在於app目錄下,該目錄一樣經過composer使用自動加載標準(PSR-4)來加載其中的文件,若是想改變目錄下的命名空間,可使用artisan命令app:name完成,也能夠直接修改composer.json文件實現。數據庫

    • console:主要包含全部的artisan命令
    • events:用來控制與事件相關的類
    • exceptions:包含應用程序的異常處理類,用於處理應用程序拋出的任何異常
    • Http:主要包含路由文件、控制器文件、請求文件,中間文件等,是應用程序與Laravel框架源代碼等外部庫交互的主要文件。
    • Jobs:主要包含消息隊列的各類消息類文件
    • Listener:主要包含監聽事件類文件。
    • Provider:主要包含服務提供者的相關文件。
  • vendor目錄json

    由一個個相互依賴的功能組件模塊組織起來的,能夠獨立工做,也能夠被組織起來協調工做。bootstrap

    • composer:主要包含composer按照PSR規範生成的自動加載類。應用程序的自動加載都是由這部分實現的。
    • laravel:包含laravel框架源代碼,代碼部分都包含在vendorlaravelframeworksrcIlluminate文件中
    • symfony:laravel框架的底層(如請求類、相應類、文件管理類)使用了symfony框架的部分,因此該目錄包含這部份內容。
    • monolog:包括日誌記錄模塊文件
    • phpunit:包含程序單元測試模塊文件

  • 路由數組

    能夠理解爲將路由設置的過程理解爲微程序內部定義了一個路由表,與網絡中使用的路由器同樣,也事先須要有一個路由表。當不一樣的請求到來時,根據路由表選擇不一樣的處理程序緩存

    • 基礎路由設置

基本路由是一個資源定位符(URL)對應一個響應程序,這個程序能夠是一個閉包函數,也能夠是一個控制器響應函數的標識網絡

具體格式:session

Route::get('/',function () {
    return 'Hello Laravel';
});

若是請求其餘方法,則須要使用對應的路由設置方法進行定義,對應的方法由get,post,put,delete等。

對於多種請求的路由定義,能夠經過match和any方法實現,

Route::match(['get','post'],'/',function () {
    return 'Hello Laravel';
});

Route::any('home', function () {
    return 'Hello Laravel';
});
  • 路由參數

主要針對的是Get請求的狀況

Route::get('資源標識/{參數名}[?][/{參數名}……', '閉包函數或者控制器響應函數標識')[->where('參數名','正則表達式')];

Route::get('user/{id}',function ($id){
   return '$id=' . $id;  
});

Route::get('user/{id}/{name}',function ($id, $name){
    return '$id=' . $id . ' and $name=' . $name; 
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
  • 控制器路由

    • 基礎控制器路由

      Route::get('home/{name}','HomeController@index');
- 隱式控制器路由
- RESTFul資源控制器路由
  • 路由羣組
  • 路由命名

至關於在路由定義時爲路由起一個別名,之後可使用別名來獲取路由的信息


  • 控制器

  • 視圖

    視圖文件是以「.balde.php」後綴命名。

    • 數據傳遞

      • 數組方式
      • with函數
      • with加變量名方式
    • blade模板

      • @extends('佈局文件名'):用於繼承一個佈局文件
      • @section('區塊名'):用於定義一個區塊,能夠有不一樣的結尾標識,@show用於顯示這個區塊,@stop和@endsection用於結束一個區塊,@overwirte用於重寫前面的區塊
      • @parent:用於顯示繼承的佈局模塊中的文件。
      • @yield('區塊文件',’默認文件‘):用於定義在佈局文件中定義一個區塊
      • @include('子視圖文件名稱'):用於在視圖文件中加載視圖文件。
相關文章
相關標籤/搜索