Trochę offtopowo ale nie całkiem.
to działa przez refleksję od lat :) to nie jest wina symfony, że masz źle zaprojektowaną aplikację.
Jest jeszcze inna opcja - to Doctrine jest zaprojektowane mało elastycznie, inne ORMy nie mają takich problemów.
W Phalconie np. mam klasę, nazwijmy ją \k3\product\EntityProduct, gdzie część zmiennych jest skojarzona z bazą danych, a inne zmienne są pomocnicze - przykładowo coś wyliczają z danych pobranych z bazy, i nie chcę tego wyliczenia trzymać w bazie danych, albo robić specjalnie dodatkowej klasy agregującej, bo tutaj się nic nie agreguje z innych relacji.
Kiedy dostaję obiekt z ORMa Phalcona to nie jest on klasy stdClass tylko klasy \k3\product\EntityProduct, z wypełnionymi polami tymi które są skojarzone z bazą danych.
I teraz jeżeli ktoś twierdzi, że w encji powinny być tylko i wyłącznie zmienne skojarzone z bazą, i nic więcej, i to służy tylko do komunikacji z bazą danych, to niestety jest w błędzie, przynajmniej jeżeli chodzi o DDD, bo być może w filozofii Doctrine/Symfony to jest prawidłowe(?).