Я хочу использовать Doctrine 1 внутри проекта Zend Framework 2. И у этого есть старый стиль именования класса подчеркивания / каталога. Если я прав, то это совместимо с автозагрузкой PSR0. Поэтому я настроил его так, как я думал, будет правильным. Но это не так. 🙁
Я получаю следующую ошибку при доступе к своему AlbumController через браузер:
Fatal error: Class 'AlbumApi\Controller\Doctrine_Query' not found in /project/application_zf2/module/AlbumApi/src/AlbumApi/Controller/AlbumController.php on line [...]
Где мое заблуждение?
Это моя структура проекта
/project
/application
/application_zf2
/module/AlbumApi/src/AlbumApi/Controller
/AlbumController.php
/composer.json
/init_autoloader.php
/library
/Doctrine
/Doctrine/MoreDirectories
/Doctrine.php
composer.json:
{
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": ">=2.2.4",
"zendframework/zend-developer-tools": "dev-master"},
"include-path": ["../library/Doctrine"],
"autoload": {
"psr-0": {
"Doctrine_": "../library/Doctrine"}
}
}
AlbumController
<?php
namespace AlbumApi\Controller;
use AlbumApi\Controller\AbstractRestfulJsonController;
use Zend\View\Model\JsonModel;
class AlbumController extends AbstractRestfulJsonController
{
public function getList()
{ // Action used for GET requests without resource Id
$query = Doctrine_Query::create()
->from('User b')
->where('b.plz LIKE ?', $plz.'%');
$result = $query->fetchArray();
return new JsonModel($result);
}
}
Доктрина 1 не использует пространства имен, поэтому вы должны написать \Doctrine_Query
вместо просто Doctrine_Query
,
Других решений пока нет …