Symfony2不能包含自定义类

时间:2013-02-14 14:38:50

标签: class symfony doctrine

第22行的C:\ wamp \ www \ test \ src \ Ado \ FrontendBundle \ Helper \ AdoFactory.php中找不到“AdoDoctrineModel”类

<?php

namespace Ado\FrontendBundle\Helper;

use AdoDoctrineModel;
use AdoApiModel;

class AdoFactory {
    protected $adapter; 

    public function __construct($container) {
        $this->adapter = $container->getParameter('adapter'); 
    }

    public function getModel()  {

        switch($this->adapter)
        {
            case 'API':
            case 'Doctrine': 
                $class = 'Ado' . $this->adapter. 'Model'; 
                return new $class;
            break;
            default: throw new Exception("unsupported format: " . $type);
        }
    }
}

?>

AdoDoctrineModel.php

namespace Ado\FrontendBundle\Helper;

class AdoDoctrineModel {

    public function __construct() {

    }

}

我尝试将AdoFactory中的使用路径更改为完整路径,同时添加“use {...} as AdoDoctrineModel” 尝试过\ new AdoDoctrineModel

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

我假设你正在使用Composer(Symfony 2.1.x)。你的代码对我来说似乎很好,我会检查composer.json文件中的这一部分:

"autoload": {
    "psr-0": {
        "": "src/"
    }
}

然后发出:

composer dump-autoload

当然文件AdoDoctrineModel.php应该放在src/Ado/FrontendBundle/Helper文件夹中。不需要use语句,因为两个类都在同一名称空间中。

答案 1 :(得分:1)

删除该代码:

use AdoDoctrineModel;
use AdoApiModel;

一切都应该正常。你需要刷新你对php命名空间如何工作的理解,检查名称空间的文档。

您当前正在告诉您的应用是获取不存在的\ AdoDoctrineModel类和\ AdoApiModel而不是\Ado\FrontendBundle\Helper\AdoDoctrineModel\Ado\FrontendBundle\Helper\AdoApiModel类。