Использование Composer для автозагрузки Doctrine 1 в Zend Framework 2

0

Я хочу использовать Doctrine 1 в проекте Zend Framework 2. И у него есть старый стиль именования класса underscore/directory. Если я прав, что совместимо с автозагрузкой 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);
    }
}
Теги:
composer-php
autoload
zend-framework2
doctrine-1.2

1 ответ

1
Лучший ответ

Doctrine 1 не использует пространства имен, поэтому вам нужно написать \Doctrine_Query а не только Doctrine_Query.

  • 0
    Большое спасибо. Это работает сейчас. Тогда я недостаточно хорошо понимаю пространства имен. Поэтому я должен добавить обратную косую черту, как только я использую пространство имен для моего файла?
  • 0
    Да. Вы можете прочитать руководство по этому вопросу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню