我的可分发symfony2包

时间:2016-05-21 00:49:12

标签: symfony bundle

我无法在任何Symfony2项目中成功安装我的第一个可分发软件包,因为我在软件包的配置上犯了错误。

我的捆绑:https://github.com/KdrMkLabs/TicketBundle

按照安装说明安装捆绑包并且通常使用composer时,它的工作原理。但是当你运行网站时,它会发生以下异常:

enter image description here

我不知道为什么会这样,你能帮我理解为可分发包设置配置的正确方法吗?

谢谢。

KDRTicketBundle配置:

enter image description here

composer.json

{
    "name": "kdrmklabs/ticket-bundle",
    "type": "symfony-bundle",
    "autoload": {
        "psr-0": { "KDRMKLabs\\TicketBundle\\": "" }
    }
}
// file: KDRTicketBundle.php

namespace KDRMKLabs\TicketBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class KDRTicketBundle extends Bundle
{
}

注意:

  • 我在所有项目类(控制器,服务,实体)中使用名称空间namespace KDRMKLabs\TicketBundle\*...
  • 这个Bundle在开发项目中运行正常,在src /目录中分配,就像开发时的每个symfony2包一样。

1 个答案:

答案 0 :(得分:2)

PSR-0自动加载需要完整命名空间由目录表示。在这种情况下,这意味着捆绑类应该位于kdrmklabs/ticket-bundle/KdrmkLabs/TicketBundle/KdrmkLabsTicketBundle.php

当然,拥有这些额外的目录是非常愚蠢的。这就是PSR-4自动加载的原因。此标准从路径中剥离已配置的名称空间前缀。

因此解决方案是将"psr-0": { ... }更改为"psr-4": { ... }