我无法访问我在捆绑包中的新文件夹中创建的自定义类。
我有一个名为: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 ...
有谁能请我指出正确的方向?
答案 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。下划线在命名空间中没有特殊含义。
呼。这让我花了很长时间才弄明白。