sockä Geschrieben 9. März 2005 Teilen Geschrieben 9. März 2005 Hi nochmal, habe ein seltsames Phänomen in einem Skript... habe folgenden Code: $objekt = new dolleKlasse(); $objekt->machWas(20,30); $objekt->machNochWas(); $rückgabe = eineFunktion($objekt, 10, 50); ... function eineFunktion($objekt, $x, $y) { $objekt->machWas(30,40); } und dazu diese Klasse class dolleKlasse { var $x; var $y; ... machWas($x, $y) { $this->x = $x; $this->y = $y; } ... } Das Problem besteht bei der Übergabe des Objektes $objekt an die Funktion. Mache ich das unter Windows (Apache), so wird der Aufruf von machWas in der Funktion ausgeführt. Unter Linux (Apache) allerdings passiert gar nix. Keine Warning, kein Fehler, nix. Als wenn er die Zeilen überliest. Woran kann das liegen? Muss ich vielleicht die Objektadressen übergeben oder wie oder was? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 9. März 2005 Teilen Geschrieben 9. März 2005 Hallo, woran siehst du denn, dass die Funktion aufgerufen wird? Die Ausgabe ist bei mir unter Windows und Linux gleich, nämlich nix. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sockä Geschrieben 9. März 2005 Autor Teilen Geschrieben 9. März 2005 Hi, also die Funktion ist jetzt nicht so, wie sie da steht Habe es nur als Beispiel genommen um zu schreiben, was ich meine. Die Funktion heißt natürlich nicht machWas() und die Funktion, die ich aufrufe, ist etwas komplexer. Deshalb habe ich sie hier nicht reingeschrieben. Kurz genommen nimmt meine Funktionen Punkt-Koordinaten für ein Array entgegen, in dem Koordinaten gespeichert werden. Die Funktion heißt addPoint() und fügt dem Array immer ein Punkt hinzu. Wenn ich addPoint() ausserhalb der Funktion aufrufe, wird der Punkt hinzugefügt. Innerhalb der Funktion halt nur auf meinem Windows-System. Unter Linux nicht. Dort macht er alles andere in der Funktion, aber die Zeile mit dem Aufruf von addPoint() überliest er scheinbar. Wenn ich mir Testweise das Punkte-Array ausgeben lasse, so hat es unter Windows z.B. 1000 Werte, unter Linux nur 10.... (ich hoffe, dass war jetzt halbwegs verständlich...) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sockä Geschrieben 9. März 2005 Autor Teilen Geschrieben 9. März 2005 Ok, Entwarnung, habe das Problemkind: Es muss tatsächlich eine Referenz auf das Objekt angegeben werden, wenn ich es in einer Funktion weiter "missbrauchen" möchte: $objekt->machWas(20,30); eineFunktion($objekt, 10, 50); ... function eineFunktion([b]&[/b]$objekt, $x, $y) { $objekt->machWas(30,40); } ... also nur das Referenzzeichen & übergeben. ... oh man... Wäre jetzt nur noch interessant, warum meine Windows-Installation so tolerant ist und ohne dem Referenzzeichen weiterarbeitet... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.