2014-10-06 116 views
0

我有ZF2應用程序,在根級別我有我的供應商文件夾。 (經典骨架應用程序) 在供應商中,包含了所有我更新並與作曲家一起安裝的庫。psr 4 - zf2加載自定義類

供應商有需要添加自定義類並自動加載它。

使用作曲家,寫這樣

"autoload": { 
    "psr-4": { 
    "ciromar\\": "/vendor/ciromar/src" 
} 

一個autolader現在的文件夾結構如下:

vendor 
--ciromar 
---- src 
------ Log 
-------- Writer 
---------- FileRotator.php (class) 

類的命名空間是FileRotator.php

namespace ciromar\Log\Writer; 

我的應用程序的控制器

use ciromar\Log\Writer\FileRotator; 

IndexController class extends AbstractActionController 
{ 
    public function indexAction() 
    { 

     $fr = new FileRotator(""); 
    } 
} 

錯誤

Fatal error: Class 'ciromar\Log\Writer\FileRotator' not found in /var/www/html/myapp/module/Application/src/Application/Controller/IndexController.php on line 21 
+0

好的,我來解決。我需要以這種方式設置路徑'。/ vendor/ciromar/src' – ciro 2014-10-06 09:14:21

回答

0

您應該設置路徑以這種方式

"autoload": { 
    "psr-4": { 
    "ciromar\\": "./vendor/ciromar/src" 
} 

但我認爲你不應該用手把您的自定義模塊供應商。 您應該像模塊一樣開發它,然後添加自己的模塊composer.json,然後添加模塊到packagist,並要求您的模塊在您的項目composer.json和作曲家下載到供應商/自動。

如果你想實現PSR-4裝載的只是應用模塊,比其放置在應用模塊的目錄,並添加自動加載規則composer.json

例如 https://samsonasik.wordpress.com/2014/01/11/zend-framework-2-using-psr-4-autoloader-in-module/