Laravel 使用本身的類庫三種方式

雖然Composer使得咱們能夠重用不少現有的類庫(例如packagist.org中的),可是咱們仍然可能用到一些不兼容composer的包或者類庫。另外在某一項目中,咱們也可能會建立某一類庫,並且可能並無製做成爲composer package 的打算。這個時候咱們能夠經過如下方式來使用本身的特有類庫。php

增長可直接實例化的類

有些須要直接在項目中使用的類,能夠經過如下方式增長到Laravel中git

1.建立類庫文件app/libs/class_libs/Message.phpgithub

2.寫入文件內容json

<?php
namespace Libs\class_libs;    

class Message {
    public static function display() {

    }
}
?>

3.在composer.json中增長autoload目錄api

"autoload": {
    "classmap": [
        "app/database/migrations",
        "app/database/seeds",
        "app/libs/class_libs"   //在這裏增長
    ]
},

4.切換到項目目錄,執行composer dump-autoload來建立導入映射app

composer dump-autoload

5.使用本身導入的類直接調用Message::display()便可composer

這種方法一樣也是增長隊列類的方法,不少人不知道Laravel中隊列處理類應該放在哪裏,其實按照上面的方法,在app目錄下建立一個queues目錄,而後讓其能夠直接實例化便可dom

增長可直接調用的函數

有人喜歡用v()來代替var_dump(),想要在Laravel中這麼作也很是容易ide

1/建立一個函數文件app/libs/function_libs/helper.php函數

2/寫入文件內容

<?php 
function v($msg){
    var_dump($msg);
}
?>

3.把文件增長到composer自動導入列表中

"autoload": {
   "classmap": [
       ...
   ],
   "files": [
       "app/libs/function_libs/helper.php"
   ],
},

4.切換到項目目錄,執行composer dump-autoload來建立導入映射

composer dump-autoload

 

或者在項目中顯示require這個文件。打開app/start/global.php,在末尾增長:

require app_path().'/libs/function_libs/helper.php';

我的感受這兩種方式都OK,若是想要控制這個文件加載的時間,甚至能夠在filter.php文件中增長如下內容

App::before( function( $request ) {
    require( "{$GLOBALS['app']['path.base']}/app/libs/function_libs/helper.php" );
});

6.在項目中直接使用函數v('hello world');

增長稍微複雜的類庫

有的時候一個類庫不單單是一個文件那麼簡單,所以下面的方式更加適合有多個文件多個結構的類庫。

1.建立psr0或者psr4標準的目錄結構。

libraries
    Myapp
        Search (note directory is capitalized)
            Search.php
            SearchFacade.php
            SearchServiceProvider.php
        AnotherLib

Myapp/Search/Search.phpSearch類的命名空間爲Myapp\Search

2.修改composer中autoload

"autoload": {
    "classmap": [
        ......
    ]
    ,
    "psr-0": {
         "Myapp": "app/libraries"
    }
},    

3.在項目中使用new Myapp\Search\Search()來實例化某一類

總結

雖然Laravel沒有強制哪一種方式最好,可是有必定的標準可使得項目結構清晰,多人合做開發時省去不少交流成本。

相關文章
相關標籤/搜索