Ich habe eine Klasse in meiner index.php
-Datei instanziiert. Aber ich benutze jQuery Ajax, um einige PHP-Dateien aufzurufen, aber sie können mein Objekt, das ich in der index.php
-Datei erstellt habe, nicht verwenden.
Wie kann ich es funktionieren lassen? Weil ich keine neuen Objekte erstellen möchte, da das von mir erstellte Objekte alle Eigenschaftswerte enthält, die ich verwenden möchte.
Verwenden Sie die Sitzung, um das Objekt für das Laden der nächsten Seite zu speichern.
%Vor%Dann auf der nächsten Seite, die von AJAX lädt
%Vor%Mit den PHP-Sitzungen können Sie Daten für einen bestimmten Benutzer auf mehreren Seiten speichern. Zum Beispiel hat vielleicht jeder Benutzer ein Einkaufswagenobjekt, das eine Liste von Artikeln enthält, die er kaufen möchte. Da Sie diese Daten nur in der THAT USERS-Sitzung speichern, kann jeder Benutzer sein eigenes Einkaufswagenobjekt haben, das auf jeder Seite gespeichert wird.
Eine weitere Option, wenn Sie keine Sitzungen verwenden möchten, ist serialisieren Ihr Objekt und senden Sie es durch einen $ _POST-Wert in Ihrem AJAX-Anruf. Nicht die eleganteste Art, es zu tun, aber eine gute Alternative, wenn Sie keine Sitzungen verwenden möchten.
Siehe Objekt-Serialisierung in der Dokumentation für weitere Informationen.
mm, sollten Sie in Sitzung speichern, $_SESSION["someobj"] = $myobj;
, und stellen Sie sicher, dass beim Aufruf der Ajax PHP-Datei die notwendigen Klassen-Dateien enthält, die die Klasse von $myobj
und alle darin enthaltenen Objekte definiert.
Könnten Sie genauer sein? Ich kann es versuchen.
So erstelle ich ein Objekt und weise es einer Sitzungsvariablen zu:
%Vor%So greife ich auf die Mitglieder des Objekts in meiner Ajax-Aufruf-PHP-Datei zu:
%Vor%Wenn Sie Ihr Objekt, das sich in Ihrer index.php befindet, nicht verschieben wollen, lassen Sie Ihre ajax eine Anfrage an index.php machen, fügen Sie aber einige zusätzliche Parameter (post / get) hinzu, die Ihre index.php verarbeiten können es als Ajax-Anfrage und nicht Ihre normale HTML-Ausgabe der Webseite zurückgeben.
Sie haben keinen Code zur Verfügung gestellt, aber ich schätze, dass Sie Ihr instanziiertes Objekt global für andere Skripte zur Darstellung bringen müssen, zum Beispiel:
%Vor%Nun möchte ich dieses Objekt woanders verwenden, wahrscheinlich unter einer Funktion oder Klasse oder an irgendeinem Ort, an dem es nicht erkannt wird, also mache ich das global mit dem globalen Schlüsselwort und das wird es auch sein auch dort erhältlich:
%Vor%Sobald Sie das Objekt haben, können Sie es in die Sitzung einfügen und dann in der Ajax-Skriptdatei verwenden.
Wie andere bereits angedeutet haben, ist $_SESSION
der Standardweg, um genau das zu tun. Das war einer der Gründe, dass Sitzungen erfunden wurden, um sie zu lösen. Andere Optionen, d. H. Das Serialisieren des Objekts, hängen von der Client-Seite ab, um das Objekt zu halten und es dann unversteift zurückzugeben. Abhängig von den Daten im Objekt ist dies keine gute Lösung, da a) das Objekt Informationen enthalten kann, die aus Sicherheitsgründen nicht auf der Client-Seite verfügbar sein sollten, und b) Sie das Objekt nach dem Empfang verifizieren müssen / p>
Wenn Sie das Objekt auf der Clientseite verwenden möchten, ist JSON eine Option zum Serialisieren von Objektdaten, siehe JSON funktioniert in PHP .
Basierend auf den meisten Antworten, die sich auf das Speichern des Objekts in $ _SESSION beziehen, ist es effizienter, nur die einzelnen Eigenschaften zu speichern, auf die in AJAX im Gegensatz zum gesamten Objekt zugegriffen werden muss, oder spielt es keine Rolle?
z.
%Vor%vs
%Vor%Ich weiß, dass das OP nach dem Zugriff auf das gesamte Objekt fragt, aber meine Frage bezieht sich darauf, ob es nur darum geht, auf bestimmte Eigenschaften eines Objekts zuzugreifen und nicht auf Methoden einer Klasse zuzugreifen, um das Objekt einmal zu ändern Es ist in AJAX.