• Jeder User im Forum verpflichtet sich zur Akzeptanz und zur Einhaltung dieser Regeln:
    1. Umgangston
      Ein angemessener höflicher Umgangston, ohne Beleidigungen, Beschimpfungen und aggressive Postings ist für jedes Mitglied Pflicht.
    2. Beiträge
      Jedes Mitglied sollte sich bemühen nur sinnvolle Beiträge zum Thema zu posten. Dabei ist unbedingt vorher zu prüfen, ob das Thema vorher schon einmal diskutiert wurde und daher fortgesetzt werden kann
      • Suchfunktion benutzen!
      • offizielle Doku lesen!
    3. Haftung
      Jeder Beitragsersteller übernimmt die alleinige Verantwortung seiner Inhalte.
    4. Werbung
      Wir erlauben keine Beiträge, Signaturen, Private Nachrichten oder eMails an Benutzer, die Werbung enthalten. Ausgenommen
      sind Stellengesuche /-angebote, welche ausschließlich im Forum "Stellengesuche" veröffentlicht werden dürfen.
    5. Verstöße
      Regelwidrige Beiträge sollten dem Team gemeldet werden. Nach deren Überprüfung werden wir schnellstmöglich
      entsprechend handeln.
    6. Authorität
      Den Anweisungen der Team-Mitglieder (Administratoren und Moderatoren) sind in diesem Forum Folge zu leisten.
      Bei Fragen oder Beschwerden bitte an diese wenden.
    Wir möchten Euch darauf aufmerksam machen, dass es bei Verstößen gegen einen oder mehreren der oben genannten
    Punkte dem Team frei steht entsprechend zu handeln. Dies kann z.B. das Löschen eines Beitrags, das Ausschliessen bzw.
    Sperren von Mitgliedern oder aber lediglich eine Verwarnung sein.

    In diesem Zusammenhang sollte erwähnt werden, dass das Forum automatisch die IP-Adresse jedes Beitrag-Erstellers
    speichert. Bei schweren Vergehen, behalten wir es uns vor, die IP-Adresse zur Strafverfolgung weiterzugeben.
  • Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

Services und deren Methoden

domeb

New member
Hi,

folgendes Szenario: Ich will auf einer Seite ein Restaurantverzeichnis mit deren Speisekarte darstellen. Der Aufbau ist so, dass die Speisekarte in mehrere Kategorien aufgeteilt werden kann, welche vom Restaurant frei gewählt werden können. z. B.:

Restaurant 1 => Getränke
Restaurant 1 => Fleischgerichte
Restaurant 1 => Fischgerichte

Restaurant 2 => Getränke
Restaurant 2 => Gerichte mit Fleisch

Somit ergeben sich vorerst zwei Entities (Restaurant und MenuCategory).

Meine erste Frage bezieht sich auf die Services der Entities. Erstelle ich nun einen RestaurantService der über die Methode "getMenuCategories($restaurantId)" verfügt, oder erstelle ich einen separaten "MenuCategoryService" der über eine Methode "getAllByRestaurantId($restaurantId)" verfügt, um auf die Kategorien eines Restaurants zuzugreifen? Hier versteh ich noch nicht so ganz, was der richtig Ansatz ist. Meine Vermutung liegt jedoch beim zweiten Ansatz.

Angenommen der separate Service wäre die beste Lösung, würde sich folgendes problem daraus ergeben: Im RestaurantController habe ich zwei actions für die Darstellung der Restaurant Detailseite und die Darstellung der Speisekarte (viewAction und menuAction). Einmal würde ich den CompanyService benötigen und das andere Mal den MenuCategoryService, jedoch nie beide. Allerdings müsste ich über die ControllerFactory, welche die services injiziert immer beide Services injizieren, was nicht gerade performant ist. Bei zwei Services wäre dies vielleicht noch vertretbar, bei mehreren jedoch nicht. Also was wäre hier der beste Weg? Dachte schon in Richtung EventListener, aber ist das nicht ein wenig übertrieben?

Danke euch schon mal für eure Anregungen!
Dominik
 

Kaiuwe

Super-Moderator
Somit ergeben sich vorerst zwei Entities (Restaurant und MenuCategory).

Meine erste Frage bezieht sich auf die Services der Entities. Erstelle ich nun einen RestaurantService der über die Methode "getMenuCategories($restaurantId)" verfügt, oder erstelle ich einen separaten "MenuCategoryService" der über eine Methode "getAllByRestaurantId($restaurantId)" verfügt, um auf die Kategorien eines Restaurants zuzugreifen?
Mal schnell geschossen: Warum kennt ein Restaurant nicht seine eigenen Menüs?

Per Code ausgedrückt:
PHP:
$restaurant->getMenuCategories();
 

Ralf

New member
Moin,

ich denke auch, dass es kein Problem ist, wenn dein RestaurantService nicht nur die Daten für das Restaurant, sondern auch die Menükategorien zurückgeben kann, auch wenn es sich dabei um unterschiedliche Entitäten (Restaurant und Kategorie) handelt.

Gruß,

Ralf
 

domeb

New member
@Kaiuwe: Ich denke nicht, dass es richtig ist die Kategorien über die Restaurant Entity zu holen, da ich dann ja immer eine Restaurant Entity benötige, was aber nicht immer notwendig ist.

@Ralf: Ich denk auch, dass es in diesem Fall vertretbar wäre. Es ist eher unwahrscheinlich, dass alle Kategorien, ohne die Restaurant Entity abgefragt werden müssen. Der eigene Service hätte dann also nur eine Methode und wär wahrschinlcih etwas übertrieben.

Aber was wäre die beste Lösung, Controller zu verwalten, welche von mehreren Services abhängig sind? Bei jedem Aufruf alle Services über die Factory zu injizieren, um dann nur einen davon zu verwenden, finde ich eher nicht so gut :)

Danke und Gruß
Dominik
 

Kaiuwe

Super-Moderator
@Kaiuwe: Ich denke nicht, dass es richtig ist die Kategorien über die Restaurant Entity zu holen, da ich dann ja immer eine Restaurant Entity benötige, was aber nicht immer notwendig ist
Ich einfach mal von der allgemeinen Realität/Tatsache ausgegangen, dass ein Restaurant auch sein Menü und dessen Kategorien kennt. :)
 

michl

New member
Aber was wäre die beste Lösung, Controller zu verwalten, welche von mehreren Services abhängig sind? Bei jedem Aufruf alle Services über die Factory zu injizieren, um dann nur einen davon zu verwenden, finde ich eher nicht so gut :)

Danke und Gruß
Dominik
Lazy Services
Die Services werden als proxy vorgehalten, bis du einen service konkret ansprichst. Genau so funktionieren deine Doctrine entities auch.
 
Oben