首頁  >  文章  >  php教程  >  Laravel中使用自己編寫類別庫的3種方法

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

高洛峰
高洛峰原創
2016-12-27 11:34:521107瀏覽

雖然Composer使得我們可以重複使用許多現有的類別庫(例如packagist.org中的),但是我們仍然可能使用一些不相容composer的套件或類別庫。另外在某一專案中,我們也可能會建立某一類別庫,而且可能並沒有製作成為composer package 的打算。這時候我們可以透過以下方式來使用自己的特有類別庫。

增加可直接實例化的類別

有些需要直接在專案中使用的類,可以透過以下方式增加到Laravel中

1.建立類別庫檔案/libraries/class/Classapp/libraries .php
2.寫入檔案內容

<span style="font-size: 16px;"><?php<br/>class Message {<br/>    public static function display() {<br/>    }<br/>}<br/>?><br/></span>

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

<span style="font-size: 16px;"><?php <br/>ClassLoader::addDirectories(array(<br/>    app_path().&#39;/commands&#39;,<br/>    app_path().&#39;/controllers&#39;,<br/>    app_path().&#39;/models&#39;,<br/>    app_path().&#39;/database/seeds&#39;,<br/>    app_path().&#39;/libaries/class&#39;, // 在这里增加<br/>));<br/>?><br/></span>

在composer.json中增加autoloadd目錄 -autoload來建立導入映射

2.使用自己導入的類別直接呼叫Message::display()即可


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

增加可直接調用的函數

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

1.建立一個函數檔app/libraries/function/helper.php

2.寫入檔案內容

<span style="font-size: 16px;">"autoload": {<br/>    "classmap": [<br/>        "app/commands",<br/>        "app/controllers",<br/>        "app/models",<br/>        "app/database/migrations",<br/>        "app/database/seeds",<br/>        "app/tests/TestCase.php",<br/>        "app/libraries/class"   //在这里增加<br/>    ]<br/>},<br/></span>

把檔案增加到composer導入清單中

<span style="font-size: 16px;"><?php <br/>function v($msg){<br/>    var_dump($msg);<br/>}<br/>?><br/></span>
或是在專案中顯示require這個檔案。打開app/start/global.php,在末尾增加:

<span style="font-size: 16px;">"autoload": {<br/>   "classmap": [<br/>       ...<br/>   ],<br/>   "files": [<br/>       "app/libraries/function/helper.php"<br/>   ],<br/>},<br/></span>
個人感覺這兩種方式都OK,如果想要控制這個檔案載入的時間,甚至可以在filter.php檔案中增加以下內容

<span style="font-size: 16px;">require app_path().&#39;/libraries/function/helper.php&#39;;<br/></span>
在專案中直接使用函數v('hello world');

增加稍微複雜的類別庫

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

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

<span style="font-size: 16px;">App::before( function( $request ) {<br/>    require( "{$GLOBALS[&#39;app&#39;][&#39;path.base&#39;]}/app/libraries/function/helper.php" );<br/>});<br/></span>

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

修改composer中autoload

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

在專案中使用new MyappSearchSearch()來實例化某一類

總結

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

更多Laravel中使用自己編寫類別庫的3種方法相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn