SORU
3 Mayıs 2012, PERŞEMBE


Symfony 2 hizmet enjeksiyon EntityManager

Kendi servisimi yaptım ve doktrin EntityManager enjekte etmen lazım, ama __construct() servisinden adlı görmüyorum, ve enjeksiyon çalışmıyor.

İşte kod ve yapılandırmaları:

<?php

namespace Test\CommonBundle\Services;
use Doctrine\ORM\EntityManager;

class UserService {

    /**
     *
     * @var EntityManager 
     */
    protected $em;

    public function __constructor(EntityManager $entityManager)
    {
        var_dump($entityManager);
        exit(); // I've never saw it happen, looks like constructor never called
        $this->em = $entityManager;
    }

    public function getUser($userId){
       var_dump($this->em ); // outputs null  
    }

}

İşte benim paket services.yml

services:
  test.common.userservice:
    class:  Test\CommonBundle\Services\UserService
    arguments: 
        entityManager: "@doctrine.orm.entity_manager"

Bu ithal ettik .böyle uygulamamı config.yml yml

imports:
    # a few lines skipped, not relevant here, i think
    - { resource: "@TestCommonBundle/Resources/config/services.yml" }

Ve denetleyicisi olarak hizmet aradığımda

    $userservice = $this->get('test.common.userservice');
    $userservice->getUser(123);

Bir nesne olsun (boş değil), ama UserService $this->em boş ve daha önce de belirttiğimiz gibi, UserService üzerinde yapıcı hiç adı olmuştur

Başka her şey gayet iyi çalışıyor, hatta diyebilirim . bir şey daha, Kumanda ve UserService farklı demetleri (ben gerçekten bu proje organize tutmak gerekir), ama yine de:

$this->get('doctrine.orm.entity_manager')

UserService ve geçerli (NOT null) almak EntityManager nesnesi için kullandığım aynı kumanda.

Yapılandırma parça veya UserService ve Doktrin config arasında bir bağ atladığım gibi görünüyor.

CEVAP
3 Mayıs 2012, PERŞEMBE


Sınıf yapıcı yöntemi __construct(), __constructor() "değil," olması gerekir:

public function __construct(EntityManager $entityManager)
{
    $this->em = $entityManager;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS Campus Life

    ASUS Campus

    18 Mart 2013
  • Digital Bounds

    Digital Boun

    19 Temmuz 2013
  • Menglong Tav

    Menglong Tav

    18 Temmuz 2010