ReflectionException: класс ArrayCollection не существует

Я пытаюсь сериализовать объекты для мобильного дайджеста. У меня есть этот класс Entity:

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Entity\User as BaseUser;

/**
 * xxx\xxx\Entity\User
 *
 * @ORM\Table()
 * @ORM\Entity()
 * @ORM\Entity(repositoryClass="xxx\xxx\Entity\UserRepository")
 */
class User extends BaseUser
{
    /**
     *
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var \Doctrine\Common\Collections\ArrayCollection
     *
     * @ORM\OneToMany(targetEntity="\xxx\xxx\Entity\Music", mappedBy="user")
     */
    protected $musics;

    /**
     * @var \Doctrine\Common\Collections\ArrayCollection
     *
     * @ORM\OneToMany(targetEntity="\xxx\xxx\Entity\Message", mappedBy="user")
     */
    protected $messages;

    /**
     * @var \Doctrine\Common\Collections\ArrayCollection
     *
     * @ORM\OneToMany(targetEntity="\xxx\xxx\Entity\Location", mappedBy="user")
     */
    protected $locations;

    public function __construct()
    {
        parent::__construct();
        $this->musics = new ArrayCollection();
        $this->messages = new ArrayCollection();
        $this->locations = new ArrayCollection();
    }
}

Теперь, когда я вызываю эту строку в своем DefaultController.php:

$user = $this->getUser();
$em = $this->getDoctrine()->getManager();

$array = $em->getRepository('xxxBundle:User')
    ->findLatest();

$serializer = $this->get('serializer');
$response = $serializer->serialize($array, 'json'); //THIS LINE THROWS EXCEPTION

У меня use Doctrine\Common\Collections\ArrayCollection; в DefaultController.php, но похоже ошибка исходит изнутри JMSSerializerBundle.

Что я пробовал до сих пор

  • Я попытался определить аннотации Doctrine, чтобы они начинались с \, но это не помогло.
  • Я очищал свой кеш миллион раз
  • Я искал подобные исключения, но все они, похоже, вызваны опечаткой, и я проверял наличие опечаток в течение последних 48 часов, и я не могу найти ни одной.

Классы были созданы автоматически с помощью app/console.


person tolgap    schedule 19.10.2012    source источник
comment
Я не вижу объявления namespace поверх этого файла класса? Вы специально опустили это здесь или просто опечатка c/p? :) Возможно, если у вас его вообще нет, PHP не умеет автозагружать ArrayCollection класс...   -  person Jovan Perovic    schedule 19.10.2012
comment
У меня есть объявление пространства имен сверху. Я проверил своих поставщиков, и ArrayCollection действительно существует в пространстве имен. Я использую его в другом контроллере, и он там работает.   -  person tolgap    schedule 19.10.2012


Ответы (1)