Doctrine przedstawia obiekt proxy z automatycznie generowanej klasy, która rozszerza twój obiekt i implementuje \Doctrine\ORM\Proxy\Proxy
. Możesz wyświetlić kod dla tych wygenerowanych automatycznie klas w app/cache/dev/doctrine/orm/Proxies/
.
Obiekt proxy zezwala na zestaw zachowań, które Doctrine zapewnia, że w przeciwnym razie musiałbyś jawnie kodować do swojego obiektu, w tym obsługę leniwego ładowania właściwości. Na przykład, jeśli obiekt ma odniesienie do innego obiektu (na przykład ze skojarzenia), niekoniecznie chcesz zawsze ładować te odniesienia, gdy pobierzesz swój rekord User
, ponieważ mogą one nie być istotne przez cały czas. Lazy-loading pozwala na późniejsze wprowadzanie danych na żądanie.
Aby wykonać to leniwe ładowanie, podmiot musi mieć dostęp do Doctrine, aby mógł poprosić Doctrine o odzyskanie odpowiednich danych. Odbywa się to poprzez właściwość __initializer__
, która jest dostarczana do obiektu proxy. Reszta wtedy się dzieje, obsługiwana przez Doctrine, bez twojego kodu, który musi znać szczegóły.
Dlaczego po prostu nie użyjesz '$ em-> getRepository ('AppBundle: User') -> find ($ id)'; –