Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Filmdatenbank & PHP OOP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Filmdatenbank & PHP OOP

    Hi,

    ich habe vor eine bereits vorhandene Filmverwaltung neu aufzulegen. Bisher wurden nur rudimentär klassen genutzt. Nun wollte ich das abze von Grund auf neu aufziehen.
    Hab mir meine UML Diagramme gemacht und die DB bereits designt. Nun frage ich mich folgendes:
    Wenn ich ein Objekt Film habe, welches als Attribute eigentlich andere Klassen enthält (z.B. Schauspieler, Regisseure, usw.).
    In meinem Beispiel sind Schauspieler und Regisseure eine extend von der Klasse Personen.

    Nun muss ich ja irgendwie ich dem Objekt Filme alle Schauspieler speichern und diese noch gezielt adressieren können.

    Wie gehe ich damit am besten um ? Collection gibt es meines Wissens ja nicht oder ?

    Ein weiterer Punkt der mir noch nicht ganz klar betrifft die seiten übergreifende Verwendung von Klassen (Session)
    Macht es Sinn das Objekt Filme komplett zu laden um eine Übersichtsliste anzuzeigen ?? Schließlich wird doch bim anklicken eines Links ein neuer Request erstellt und alle Variablen müssen neu Belegt werden oder etwa nicht ?
    Oder sollte man einfach die Liste laden und sämtliche Objekte in einer Session abspeichern ?

  • #2
    Film hat n-Schauspieler...also würde ich sagen (zumindest übertragen von meinen java-kenntnissen), dass film ein array "schauspieler" hat, das seinerseits wieder elemente vom typ schauspieler in sich trägt.

    Kommentar


    • #3
      Zitat von Lifestyle Beitrag anzeigen
      Wie gehe ich damit am besten um ? Collection gibt es meines Wissens ja nicht oder ?
      Es gibt aber bspw. Arrays.

      Macht es Sinn das Objekt Filme komplett zu laden um eine Übersichtsliste anzuzeigen ??
      K.A., wo von du jetzt redest.
      Es gibt sicher eine Klasse Film, Singular - aber was ein „Objekt Filme“ sein soll, ist mir unklar.


      Btw., könntest du das plenken bitte lassen? Danke.
      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

      Kommentar


      • #4
        Vielen Dank für die schnellen Antworten. Das plenken kannte ich bisher nicht mal, aber ich gebe mir Mühe.

        Dann nutze ich für Collections also Arrays. Wenn ich nun in einem Array ein Objekt direkt adressieren will, erstelle ich nicht Platzhalter zwischen den einzelnen Elementen?
        Ein Beispiel wäre da Schauspieler A hat ID = 23034 und Schauspieler B 45729. Führt dieser Umstand nicht zu einem massiven Speicherverbrauch?

        Zitat von ChrisB Beitrag anzeigen
        Es gibt sicher eine Klasse Film, Singular - aber was ein „Objekt Filme“ sein soll, ist mir unklar.
        Sicherlich wird es eine Klasse Film geben aus der mehrere Filmobjekte erzeugt werden, die in einem Array gehalten werden.

        Bei einer Listenansicht gebe ich nun 30 Treffer aus. Macht es nun Sinn alle 30 Objekte zu laden (inklusive aller Attribute) und diese weiter zu geben? Schließlich wird nachdem ein Treffer angeklickt wurde alles verworfen.

        Oder ist es sinnvoller nur ein Minimum an benötigten Infos für die Listenansicht bereit zu stellen.

        Kommentar


        • #5
          Oder ist es sinnvoller nur ein Minimum an benötigten Infos für die Listenansicht bereit zu stellen.
          Natürlich ist es nicht sinvoll alles zu laden wenn doch nur 3 Infos gebraucht werden !
          Signatur:
          PHP-Code:
          $s '0048656c6c6f20576f726c64';
          while(
          $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

          Kommentar


          • #6
            Zitat von Lifestyle Beitrag anzeigen
            Ein Beispiel wäre da Schauspieler A hat ID = 23034 und Schauspieler B 45729. Führt dieser Umstand nicht zu einem massiven Speicherverbrauch?
            Nein - Array-Schlüssel müssen nicht fortlaufend sein (und noch nicht mal nummerisch).

            Da du von Collections sprichst, kommst du wohl aus einer anderen Sprach-Welt - deshalb würde ich dich bitten, dich erst mal ein bisschen mehr mit den Basics von PHP und seinen Datentypen zu beschäftigen, das sollte weitere Fragen dieser Art erübrigen.

            Bei einer Listenansicht gebe ich nun 30 Treffer aus. Macht es nun Sinn alle 30 Objekte zu laden
            Das kommt darauf an, wie du die Daten überhaupt speicherst.
            Man speichert ja idR. keine Instanzen (geht sowieso nur über Serialisierung), sondern die Daten für sich, und erzeugt damit dann ggf. ein Objekt.

            Wenn du jetzt nur bspw. Jahr und Titel für deine Anzeige brauchst - dann wäre es eher sinnfrei, auch noch den ganzen anderen Kram, den ein Film als Attribute hat, ebenfalls zu laden. Um nur Jahr und Titel anzuzeigen, muss man nicht mal ein Objekt anlegen - die kann man auch so aus der DB auslesen und anzeigen.
            [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

            Kommentar


            • #7
              Zum Verständnis: Arrays, selbst numerisch indizierte, sind in PHP eigentlich Hashtables
              [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
              [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

              Kommentar


              • #8
                Zum Verständnis: Arrays, selbst numerisch indizierte, sind in PHP eigentlich Hashtables
                Das halte ich für diskussionswürdig (auch wenns hier dem Verständnis dient). Assoziative Arrays und numerische legen bei manchen PHP-FUnktionen durchaus verschiedene Verhalten an den Tag.
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #9
                  Zitat von ByStones Beitrag anzeigen
                  Natürlich ist es nicht sinvoll alles zu laden wenn doch nur 3 Infos gebraucht werden !
                  Die eigentlich Frage kommt daher, dass ich persönlich in .NET dazu tendiere möglichst viel an Infos mitzuführen um die Datenbankabfragen später zu minimieren.


                  Zitat von ChrisB Beitrag anzeigen
                  Nein - Array-Schlüssel müssen nicht fortlaufend sein (und noch nicht mal nummerisch).

                  Da du von Collections sprichst, kommst du wohl aus einer anderen Sprach-Welt.
                  Ja ich habe damals zwar mit php angefangen, bin dann aber, bedingt durch die Firma, in Perl und .Net abgedriftet.



                  Zitat von ChrisB Beitrag anzeigen
                  Wenn du jetzt nur bspw. Jahr und Titel für deine Anzeige brauchst - dann wäre es eher sinnfrei, auch noch den ganzen anderen Kram, den ein Film als Attribute hat, ebenfalls zu laden. Um nur Jahr und Titel anzuzeigen, muss man nicht mal ein Objekt anlegen - die kann man auch so aus der DB auslesen und anzeigen.
                  Genau hier triffst du die Kernbedenken die ich zur Zeit habe. Ich werde nie, außer in der Detailansicht, alle Infos benötigen. Alles was an Methoden denkbar wäre ist ein Verleihvorgang, eine Bewertung, eine Reservierung, usw.

                  Genau das ist die eigentliche Kernproblematik. Macht OOP in diesem Fall Sinn?

                  Kommentar


                  • #10
                    Zitat von Lifestyle Beitrag anzeigen
                    Genau hier triffst du die Kernbedenken die ich zur Zeit habe. Ich werde nie, außer in der Detailansicht, alle Infos benötigen.
                    Na dann schreib dir deine Klasse doch so, dass sie auch nur mit diesen Kern-Informationen erstellt werden kann - der unwichtige Rest bleibt dann im Zweifelsfall leer bzw. uninitialisiert.


                    Oder erstelle dir eine Minimal-Klasse, die das hat, was zur Anzeige benötigt wird (Methoden und Eigenschaften).
                    Davon kannst du dann eine weitere, komplexere Klasse ableiten, die darüber hinaus gehende Features hat - bspw. Methoden zur Validierung der Daten vor dem Anlegen/Eintragen eines neuen Films.
                    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                    Kommentar


                    • #11
                      Ja. Immer.
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Zitat von nikosch Beitrag anzeigen
                        Das halte ich für diskussionswürdig (auch wenns hier dem Verständnis dient). Assoziative Arrays und numerische legen bei manchen PHP-FUnktionen durchaus verschiedene Verhalten an den Tag.
                        Wo denn zum Beispiel? Mir fällt auf Anhieb keins ein, abgesehen von automatisch aufsteigender Indizierung bei []= etc. - was für mich nichts an der internen Repräsentation ändert.
                        [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
                        [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

                        Kommentar


                        • #13
                          array_merge()
                          array_diff() etc.

                          [edit]

                          wohl doch nur merge ..
                          [COLOR="#F5F5FF"]--[/COLOR]
                          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                          [COLOR="#F5F5FF"]
                          --[/COLOR]

                          Kommentar


                          • #14
                            Dann erst einmal vielen Dank euch allen. Werde mich dann an die eigentliche Umsetzung machen. Das eigentliche Programmieren ist ja nur Fleißarbeit.

                            Eine Anmerkung habe ich noch. Die Buttons zum blättern sind zu klein, wenn man diese per Handy bedienen muss.
                            Dann wünsche ich nun mal eine gute Nacht.

                            Kommentar

                            Lädt...
                            X