2016-08-31 44 views
2

所以我在我的localhost中有一個公共目錄,其中包含一些我希望能夠在當前laravel項目中使用的類。如何在laravel項目中包含外部文件?

那麼如何將這些外部類/文件包含在laravel中呢?

我想在我的composer.json文件中添加這些文件,

"autoload": { 
     "classmap": [ 
      "database", 
      "../public_classes/priceClass.php" 
     ], 
     "psr-4": { 
      "App\\": "app/" 
     }, 
     "files": [ 
      "../public_classes/priceClass.php" 
     ] 
    }, 

composer dump-autoload,然後當我試圖調用的函數,它不會工作。

+0

你想包括哪種類型的文件?類(具有名稱空間)或簡單的函數? – Andrew

+0

我想包括oop類,但我最終做了簡單的功能。 –

回答

0

我最終做的是把路徑放在我的composer.json中,然後做composer dump-autoload

composer.json:

"autoload": { 
     "classmap": [ 
      "database", 
      "../public_classes/priceClass.php" 
     ], 
     "psr-4": { 
      "App\\": "app/" 
     }, 
     "files": [ 
      "../public_classes/priceClass.php" 
     ] 
    }, 

然後,我希望要添加的文件,我編輯成簡單的功能,而不是那些空中接力。

priceClass.php:

<?php 

function getPrices(){ 
/* 
* 
* 
*Statements here 
* 
*/ 
} 

?> 

而且只需

$prices = getPrices(); 

我這樣做是把它在我的laravel控制器,因爲當我試圖有類似:

class Prices(){ 

    public function getPrices(){ 
     .... 
    } 

} 

然後在我的laravel控制器中調用它:

$priceClass = new Prices(); 
$prices = $priceClass->getPrices(); 

我結束了一個錯誤,像這樣:價格類未找到。

2

如果您使用的是PSR-4,則不需要在composer.json中添加任何內容。例如,您可以在\app\MyClasses\MyClass.php中創建PHP文件,並在自定義類中使用此名稱空間:namespace App\MyClasses

Laravel會自動爲您加載這門課程。

+0

我試圖包含的文件不屬於laravel項目所在的目錄。這些文件位於一個單獨的目錄中。他們是我的存儲庫類。 –

2

我還希望在我的Laravel項目中包含幾個類,因爲我只是將這些文件複製到一個新目錄(應用/庫)中,並將包名分配給所有類,並對所有這些類文件遵循PSR-4 Autoloading standard在我的composer.json中添加了以下代碼。

 ... 
     "autoload": { 
      "classmap": [ 
       "app/Libraries", 
      ], 
... 

希望這將解決您的問題...

快樂幫!

相關問題