2014-09-05 59 views
7

我正在做一個使用Laravel 4.2的項目,我需要在控制器中包含一個PHP文件(將PDF轉換爲文本的庫),然後返回隨文字變化,任何想法如何?Laravel 4.2:將一個PHP文件(庫)包含到控制器中

這是我控制器

public function transform() { 
    include ('includes/vendor/autoload.php'); 
} 

而且我/app/start/global.php文件:

ClassLoader::addDirectories(array(
    app_path().'/commands', 
    app_path().'/controllers', 
    app_path().'/models', 
    app_path().'/database/seeds', 
    app_path().'/includes', 

)); 

這是錯誤

include(includes/vendor/autoload.php): failed to open stream: No such file or directory 

回答

4

我認爲你是對的兄弟,但是,我找到了另一種方式,也許不是正確的方式,但它的工作原理。

是這樣的,我創建了一個名爲新文件夾包括,把我的檔案在那裏,然後在/app/start/global.php我加入這一行:

require app_path().'/includes/vendor/autoload.php'; 

現在正在工作: D

16

您可以在您的應用程序目錄裏創建一個新的目錄,例如,app/libraries

然後在您的composer.json文件,您可以包括app/libraries在你的自動加載類映射:

{ 
    "name": "laravel/laravel", 
    "description": "The Laravel Framework.", 
    "keywords": ["framework", "laravel"], 
    "license": "MIT", 
    "require": { 
     "laravel/framework": "4.2.*", 
    }, 
    "autoload": { 
     "classmap": [ 
      "app/commands", 
      "app/controllers", 
      "app/models", 
      "app/libraries", <------------------ YOUR CUSTOM DIRECTORY 
      "app/database/migrations", 
      "app/database/seeds", 
      "app/tests/TestCase.php" 
     ] 
    }, 
    "scripts": { 
     "post-install-cmd": [ 
      "php artisan clear-compiled", 
      "php artisan optimize" 
     ], 
     "post-update-cmd": [ 
      "php artisan clear-compiled", 
      "php artisan optimize" 
     ], 
     "post-create-project-cmd": [ 
      "php artisan key:generate" 
     ] 
    }, 
    "config": { 
     "preferred-install": "dist" 
    }, 
    "minimum-stability": "stable", 
} 

一定要運行在修改你的composer.json後修改爲composer dump-autoload

我們假設您的班級名稱爲CustomClass.php,它位於app/libraries目錄中(所以完整路徑爲app/libraries/CustomClass.php)。如果您按照慣例正確命名了您的班級名稱,那麼您的名稱空間可能會被命名爲libraries。爲了清楚起見,我們將調用我們的命名空間custom以避免與目錄混淆。

$class = new \custom\CustomClass(); 

或者,你可以給它一個別名在app/config/app.php文件:

/* 
|-------------------------------------------------------------------------- 
| Class Aliases 
|-------------------------------------------------------------------------- 
| 
| This array of class aliases will be registered when this application 
| is started. However, feel free to register as many as you wish as 
| the aliases are "lazy" loaded so they don't hinder performance. 
| 
*/ 

'aliases' => array(
    ... 
    'CustomClass' => 'custom\CustomClass', 
    ... 
) 

而且你可以在應用程序的任何地方,你會與任何其他的類實例化類:

$class = new CustomClass(); 

希望這有助於!

+0

我已將''app/libraries「'添加到我的composer.json autoload-> classmap部分。然後我添加了'TextCleaner =>'libraries \ TextCleaner'到我的app/config/app.php別名中。我嘗試實例化我的類像'$ imageCleaner = new \ libraries \ TextCleaner()'並且像'$ imageCleaner = new TextCleaner();'這兩個錯誤都表明類不存在。是的,我已經成功運行了composer dump-autload。 – 2014-11-21 22:22:52

+0

@BillGarrison確保您的班級名稱空間。假設你的類的命名空間被稱爲'助手'(在你的類的頂部是'命名空間助手')。在你的config/app.php文件中,你可以將它包含爲''TextCleaner'=>'helpers \ TextCleaner'。我編輯了原始答案以幫助澄清。 – eluong 2014-11-22 00:50:19

+0

今天幫了我:) +1 – 2015-01-03 13:03:47

相關問題