2014-10-06 117 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/