雖然Composer使得咱們能夠重用不少現有的類庫(例如packagist.org中的),可是咱們仍然可能用到一些不兼容composer的包或者類庫。另外在某一項目中,咱們也可能會建立某一類庫,並且可能並無製做成爲composer package 的打算。這個時候咱們能夠經過如下方式來使用本身的特有類庫。php
有些須要直接在項目中使用的類,能夠經過如下方式增長到Laravel中git
1.建立類庫文件app/libs/class_libs/Message.php
github
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')
;
有的時候一個類庫不單單是一個文件那麼簡單,所以下面的方式更加適合有多個文件多個結構的類庫。
libraries Myapp Search (note directory is capitalized) Search.php SearchFacade.php SearchServiceProvider.php AnotherLib
Myapp/Search/Search.php
中Search
類的命名空間爲Myapp\Search
。
2.修改composer中autoload
"autoload": { "classmap": [ ...... ] , "psr-0": { "Myapp": "app/libraries" } },
3.在項目中使用new Myapp\Search\Search()
來實例化某一類
雖然Laravel沒有強制哪一種方式最好,可是有必定的標準可使得項目結構清晰,多人合做開發時省去不少交流成本。