Zum Inhalt springen

[PHP] Unterschied Objekt-Übergabe an Funktionen bei Win<->Linux?


Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...