Probleme bei der Übergabe von Klasseninstanzen

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

  • Probleme bei der Übergabe von Klasseninstanzen

    Hallo zusammen,

    ich habe hier ein mittelgroßes Problem mit Klassen und Instanzen und hoffe Ihr könnt mir weiterhelfen...

    Also Folgendes:

    In einer PHP Datei "Gallery.php" generiere ich eine Gallery von Bildern und den dazugehörigen HTML code. Um die einzelnen Bilder darzustellen habe ich eine Klasse "Image.class.php". In dieser Klasse stehen alle nötigen Variablen und Funktionen. Unter anderem gibt es eine Funktion "printThumb()". Diese Funktion generiert mir meine Thumbs -> also auch den nötigen HTML Code der in der Gallery verwendet wird. Soweit so gut.

    Wenn ich nun auf eines der Thumbs klicke wird eine weitere PHP Datei aufgerufen "Detail.php", die dann für die Detailansicht des Bildes sorgt. Früher habe das alles wunderbar über Bild-ID's gemacht die in einer SQL Datenbank standen. Das zog allerdings immer mehrfache DB-Aufrufe nach sich, da ich so ziemlich die selben Daten für die Thumb- und für die Detailansicht benötigte. Das war der ursprüngliche Gedanke um auf Klassen umzusteigen.

    Nun wollte ich (leitsinnig wie ich bin) das Ganze zu gestalten, dass ich irgendwo in der Methode "printThumb" bei "<a href="detail.php?" den $this Parameter der "Image.class" mit übergebe -> also den Verweis auf die Instanz der aufrufenden Klasse.

    Der Zweck sollte sein, dass wenn das "Detail" aufgerufen wird, ich einen direkten Verweis auf meine Image-Instanz bekomme.

    Irgendwie bekomme ich das Ganze aber nicht zum Laufen und habe auch langsam keine Ideen mehr. Habe es mit Formularen und Sessions probiert.

    Geht das überhaupt - die $this in einem Link zu übergeben. Wie kann ich in "Detail.php" an die Instanz gelangen, möglichst ohne eine Unmenge von globalen Variablen -> also ein eleganter Weg..

    Danke für Eure Hilfe!
    Der Verzweiflung nahe,

    Lars

    www.fotos.desg.de

  • #2
    das liegt wohl daran, dass die instanz der klasse (auch objekt genannt) beim beenden des ersten scriptes mitstirbt. somit kannst du bei dem link uebergeben was du willst, weil es nicht mehr existiert sobald der link aufgerufen wird. eine moeglichkeit dieses problem zu umgehen waere es die instanz der thumbnail-generierenden klasse zu serializen und in der benutzersession abzulegen.
    inwieweit das sinn macht ist dir ueberlassen. bei einer komplexeren rechteverwaltung wirst du um eine abpruefen der bild-id jedoch nicht drumrumkommen.

    gruss jens
    1101100 1101001 1100110 1100101 1101001 1110011 1100001 1100010 1101001 1110100 1100011 1101000

    /(bb|[^b]{2})/

    Kommentar


    • #3
      edit: ach jetz weis ich was er meint
      MfG
      aim
      Lies mich jetzt!
      - OT-Tags-Liebhaber und BB-Code-Einrücker -

      Kommentar


      • #4
        Re: Probleme bei der Übergabe von Klasseninstanzen

        verstehe ich das richtig:
        du hast in script 1 ein objekt, willst dessen $this an einen link anhängen - und dann in script 2 über diesen übergebenen parameter wieder zugriff auf eben dieses objekt haben?

        das funktioniert so natürlich nicht, weil dein script 2 das objekt überhaupt nicht kennt - und übergeben wird ihm lediglich ein string.

        du müsstest also wenn schon zusehen, dass du das komplette objekt übergibst. serialize() könnte helfen.
        aber achtung, dass speichert auch nur die objekteigenschaften; die objektmethoden gehen verloren. also müsste in script 2 eine neue objektinstanz angelegt werden, mit den übergebenen eigenschaften "befüllt" werden - und erst dann kannst du wieder wie gewohnt damit arbeiten.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Re: Re: Probleme bei der Übergabe von Klasseninstanzen

          Original geschrieben von wahsaga
          aber achtung, dass speichert auch nur die objekteigenschaften; die objektmethoden gehen verloren.
          Du arbeitest mit PHP3?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Re: Re: Probleme bei der Übergabe von Klasseninstanzen

            Original geschrieben von wahsaga
            verstehe ich das richtig:
            du hast in script 1 ein objekt, willst dessen $this an einen link anhängen - und dann in script 2 über diesen übergebenen parameter wieder zugriff auf eben dieses objekt haben?

            das funktioniert so natürlich nicht, weil dein script 2 das objekt überhaupt nicht kennt - und übergeben wird ihm lediglich ein string.

            du müsstest also wenn schon zusehen, dass du das komplette objekt übergibst. serialize() könnte helfen.
            aber achtung, dass speichert auch nur die objekteigenschaften; die objektmethoden gehen verloren. also müsste in script 2 eine neue objektinstanz angelegt werden, mit den übergebenen eigenschaften "befüllt" werden - und erst dann kannst du wieder wie gewohnt damit arbeiten.
            danke für die Hilfe! Aber gibt es nicht eine elegantere Methode, um an die Instanz wieder heranzukommen. Das Einzige wobei ich mir im Klaren bin ist, dass Sessions wohl nicht der Richtige Weg sind.

            Mit dem Serialize hatte ich auch schon probiert. Das Problem hierbei war aber, dass ich es nicht geschafft hatte den String komplett zu übergeben. Irgendwo hatte er immer Probleme bei den einthaltenen '=' bzw '"'

            Ich habe wohl irgendwo ein konzeptionelles Problem - aber ich komme einfach nicht dahinter :-(


            Grüße,
            Lars

            Kommentar


            • #7
              Re: Re: Re: Probleme bei der Übergabe von Klasseninstanzen

              Original geschrieben von mrhappiness
              Du arbeitest mit PHP3?
              es ist PHP4....

              Leider hat mein Webmaster den Schritt zu PHP5 noch nicht geschafft. Die Frage wäre aber auch, ob es bei PHP5 irgendeine Möglichkeit gäbe....

              Kommentar


              • #8
                Re: Re: Re: Re: Probleme bei der Übergabe von Klasseninstanzen

                Original geschrieben von desgphoto
                es ist PHP4....
                Ich habe dich zwar nicht gemeint, aber das macht nichts.
                In PHP4 wird das komplette Objekt wiederhergestellt, du solltest nur die Klassendefinition vor dem Aufruf von unserialize aufrufen
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Re: Re: Re: Probleme bei der Übergabe von Klasseninstanzen

                  Original geschrieben von mrhappiness
                  Du arbeitest mit PHP3?
                  nein, aber dummerweise mal wieder mit der deutschen manual-version :-)
                  danke für den hinweis.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar

                  Lädt...
                  X