Symfony2访问自定义类

时间:2013-02-07 15:20:17

标签: symfony namespaces

我无法访问我在捆绑包中的新文件夹中创建的自定义类。

我有一个名为:MemberBundle的软件包 - 位于src / My / Bundle / MemberBundle

我创建了一个名为Models的目录,位于src / My / Bundle / MemberBundle / Models

在该目录中,我有一个名为MemberModel.php的文件,其代码如下:

<?php
namespace My\MemberBundle\Models;

class MemberModel {
    public function getActiveCampaignId($zone) {
    ### Custom Mysql Query
    ...
    }
}

当我尝试从我的控制器访问该类时,如下所示:

    $MemberModel = new My\MemberBundle\Models\MemberModel();
    $data = $MemberModel->getActiveCampaignId("1");
    print_r($data);

我收到错误:

Fatal error: Class 'My\MemberBundle\Models\MemberModel' not found in ...

有谁能请我指出正确的方向?

2 个答案:

答案 0 :(得分:1)

事实证明我并没有根据需要使用完整路径。这两条路径都需要添加“Bundle”。

我应该使用这两段代码:

<?php
namespace My\Bundle\MemberBundle\Models;

class MemberModel {
    public function getActiveCampaignId($zone) {
    ### Custom Mysql Query
    ...
    }
}

    $MemberModel = new My\Bundle\MemberBundle\Models\MemberModel();
    $data = $MemberModel->getRandomActiveCampaignId("1");
    print_r($data);

答案 1 :(得分:1)

我试图附加在类名中有下划线的旧类,但无法加载该类。显然,下划线是类名的特殊字符,被视为目录分隔符或这些行中的某些内容。

更多信息@ http://www.sitepoint.com/autoloading-and-the-psr-0-standard/

  

类名中的每个下划线都转换为DIRECTORY_SEPARATOR。下划线在命名空间中没有特殊含义。

呼。这让我花了很长时间才弄明白。