0

在第 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 中的使用路径更改为完整路径,还添加了“使用 {...} 作为 AdoDoctrineModel”

任何帮助都会很棒!

4

2 回答 2

1

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

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

然后发出:

composer dump-autoload

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

于 2013-02-14T14:45:22.240 回答
1

删除该代码:

use AdoDoctrineModel;
use AdoApiModel;

一切都应该正常。您需要重新了解 php 命名空间的工作原理,请查看有关命名空间的文档。

what you are currently telling your app is fetch a non existent \AdoDoctrineModel class and \AdoApiModel instead of of \Ado\FrontendBundle\Helper\AdoDoctrineModel and \Ado\FrontendBundle\Helper\AdoApiModel classes.

于 2013-02-14T16:22:58.767 回答