国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

Laravel中使用自己編寫類庫的3種方法

2024-05-04 23:31:09
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Laravel中使用自己編寫類庫的3種方法,本文講解了增加可直接實例化的類、增加可直接調用的函數、增加稍微復雜的類庫三種方式,需要的朋友可以參考下
 

雖然Composer使得我們可以重用很多現有的類庫(例如packagist.org中的),但是我們仍然可能用到一些不兼容composer的包或者類庫。另外在某一項目中,我們也可能會創建某一類庫,而且可能并沒有制作成為composer package 的打算。這個時候我們可以通過以下方式來使用自己的特有類庫。

增加可直接實例化的類

有些需要直接在項目中使用的類,可以通過以下方式增加到Laravel中

1.創建類庫文件app/libraries/class/myClass.php
2.寫入文件內容

 

復制代碼代碼如下:

<?php
class Message {
    public static function display() {

 

    }
}
?>

 

在app/start/globals.php中增加類導入路徑

 

復制代碼代碼如下:

<?php 
ClassLoader::addDirectories(array(

 

    app_path().'/commands',
    app_path().'/controllers',
    app_path().'/models',
    app_path().'/database/seeds',
    app_path().'/libaries/class', // 在這里增加

));
?>

 

在composer.json中增加autoload目錄

 

復制代碼代碼如下:

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php",
        "app/libraries/class"   //在這里增加
    ]
},

 

1.執行composer dump-autoload來創建導入映射
2.使用自己導入的類直接調用Message::display()即可

這種方法同樣也是增加隊列類的方法,很多人不知道Laravel中隊列處理類應該放在哪里,其實按照上面的方法,在app目錄下創建一個queues目錄,然后讓其可以直接實例化即可

增加可直接調用的函數

有人喜歡用v()來代替var_dump(),想要在Laravel中這么做也非常容易

1.創建一個函數文件app/libraries/function/helper.php
2.寫入文件內容

 

復制代碼代碼如下:

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

 

把文件增加到composer自動導入列表中

 

復制代碼代碼如下:

"autoload": {
   "classmap": [
       ...
   ],
   "files": [
       "app/libraries/function/helper.php"
   ],
},

 

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

復制代碼代碼如下:

require app_path().'/libraries/function/helper.php';

個人感覺這兩種方式都OK,如果想要控制這個文件加載的時間,甚至可以在filter.php文件中增加以下內容
復制代碼代碼如下:

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

 

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

增加稍微復雜的類庫

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

創建psr0或者psr4標準的目錄結構。

復制代碼代碼如下:

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

Myapp/Search/Search.php中Search類的命名空間為Myapp/Search。

 

修改composer中autoload

復制代碼代碼如下:

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/libraries",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ]
    ,
    "psr-0": {
         "Myapp": "app/libraries"
    }
},

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

 

總結

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天长市| 铁力市| 兰州市| 沾益县| 木兰县| 岳阳县| 赤城县| 大荔县| 马尔康县| 左云县| 鸡东县| 台中市| 青河县| 革吉县| 尉氏县| 泊头市| 普安县| 黔西| SHOW| 鄂州市| 法库县| 弥渡县| 东山县| 天气| 五常市| 齐齐哈尔市| 临颍县| 荥经县| 墨玉县| 盐亭县| 杭州市| 军事| 息烽县| 合阳县| 崇阳县| 尼勒克县| 科技| 肥西县| 常熟市| 达孜县| 遵义市|