Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Mapowanie interfejsów w Doctrine
fifjak
post
Post #1





Grupa: Nieautoryzowani
Postów: 6
Pomógł: 0
Dołączył: 19.05.2014

Ostrzeżenie: (0%)
-----


Taka sytuacja. Powiedzmy że chcecie zrobić następującą strukturę encji:
1. Klasa A implementuje interface I
2. Klasa B implementuje interface I
3. Klasa C

Klasa C posiada jakieś własności, wśród których jedna z nich może przechowywać instancje obiektu klasy A lub instancje obiektu klasy B, czyli ustawiam sobie typ tej własności w klasie C na interface I. Problem pojawia się w momencie, kiedy chcę pobrać dane z DB ponieważ muszę w yaml'u zdefiniować jaki obiekt powinien zostać utworzony podczas ustawiania tej własności. Jeśli ustawię tam typ na klasę A to zawsze będzie tam tworzyć obiekty klasy A - tak samo z klasą B. Nie mogę podać tam interface'u I, bo jak każdemu wiadomo, nie można napisać "new I".

Co powiedzieć doctrine, żeby on wiedział jaki obiekt ma utworzyć - A lub B. Wydaje mi się, że powinien tu zostać utworzony złożony klucz obcy (ID oraz typ, który będzie określać jaka klasa powinna zostać wykorzystana do utworzenia obiektu). Jak to wszystko skonfigurować, żeby doctrine utworzył taki klucz?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
fifjak
post
Post #2





Grupa: Nieautoryzowani
Postów: 6
Pomógł: 0
Dołączył: 19.05.2014

Ostrzeżenie: (0%)
-----


W porządku, konkretne zastosowanie.

Temat to plany pracy. Na planie znajdują się jakieś zadania. "Obsługą" tych zadań może zajmować się pojedyncza osoba lub grupa osób - nazwijmy ich właścicielami zadań. W kodzie pojedynczą osobę reprezentuje klasa A, a grupę klasa B. Obie klasy różnią się między sobą. Teraz potrzebuję gdzieś wyświetlić informację o właścicielu. Żeby uniknąć sytuacji typu if ($wlasciciel instanceof KlasaA){....}else if($wlasciciel instanceof KlasaB) itd., chcę zrobić interfejs, który będę implementować w tych dwóch klasach i w każdej nowej, która by jeszcze mogła powstać. W ten sposób, kod za pomocą którego wyświetlamy informacje o właścicielu nie będzie się zmieniać pod wpływem dodania nowego typu właściciela zadania i nie będzie wymagał dodatkowych modyfikacji testów jednostkowych.

Dopowiem jeszcze, że ten problem mam w symfony 2.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 21:30