3

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

我有一个名为: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 ...

谁能指出我正确的方向?

4

2 回答 2

1

事实证明我没有根据需要使用完整路径。两条路径都需要将“捆绑”添加到其中。

我应该一直在使用这两个代码:

<?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);
于 2013-02-07T16:48:32.997 回答
1

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

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

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

呸。这花了我太长时间才弄清楚。

于 2014-07-08T12:28:32.780 回答