psr 4 - zf2加载自定义类

时间:2014-10-06 09:07:39

标签: zend-framework2 composer-php

我有ZF2应用程序,在根级别我是我的供应商文件夹。 (经典骨架应用) 在供应商中,包含我使用composer更新和安装的所有库。

在供应商下需要添加自定义类并自动加载它。

使用composer并编写像这样的自动编辑器

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

现在文件夹结构如下:

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

1 个答案:

答案 0 :(得分:0)

您应该以这种方式设置路径

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

但我认为您不应该手动将自定义模块放到供应商处。 您应该像模块一样开发它,然后添加自己的模块composer.json,接下来将模块添加到packagist,然后在项目中需要您的模块composer.json和composer将它自动下载到vendor /。

如果您只想为app模块加载PSR-4,请将其放在app modules目录中,并将自动加载规则添加到composer.json

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