Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP]"Cannot re-assign $this" - Fehler (https://www.delphipraxis.net/81311-%5Bphp%5D-cannot-re-assign-%24-fehler.html)

Daniel G 24. Nov 2006 16:02


[PHP]"Cannot re-assign $this" - Fehler
 
Hülfe. :stupid:

Die Antworten über Google sind alle nicht so das wahre. Also, folgendes: Ich habe im INet einen Organizer gefunden, den man sich auf seinem Webspace installieren kann. Hat eigentlich alles, was ich brauche. Ich habe ihn mir noch etwas angepasst und um ein Login - System erweitert. (Tutorials sind was feines.. :mrgreen:). Na ja, wie dem auch sei..

Wie man dem Titel entnehmen kann, bekomme ich eben diese Fehlermeldung. Der Code sieht so aus:

Code:
function & getRef(&$ref) {
  return $ref;
}

if ($act=="delete") {
        $mbox =getImap();
        for ($i=0;$i<sizeof($num);$i++) {
                if (is_array($num)) $this = $num[$i]; else $this = $num; //<== Hier kommt die Fehlermeldung!
                $timetest= strstr(getRef($this),"@");
                $pos = strpos(getRef($this),"@");
                if ($pos!=0) {
                        $numr= substr(getRef($this),0,$pos);
                        $info=imap_headerinfo($mbox,$numr); }
                imap_delete($mbox,$numr); }
        imap_expunge($mbox);
        imap_close($mbox);
        if ($outbox) { Header("Location: email.php?outbox=true"); }
        else { Header("Location: email.php"); }
}
Die Funktion getRef(&$ref) habe ich auf bugs.php.net gefunden und ist ein kleines Workaround. Allerdings kann ich dieses Workaround nicht auf die obige markierte Zeile anwenden. Ich muss gestehen, meine PHP - Kentnisse dümpeln irgendwo bei "Anfänger" herum...

Wie kann ich das Problem lösen?

P.S.: Der Autor kümmert sich nicht mehr um das Projekt, deswegen seid ihr meine letzte Hoffnung... :wink:

3_of_8 24. Nov 2006 16:06

Re: [PHP]"Cannot re-assign $this" - Fehler
 
Also so weit ich weiß, kann man $this keinen Wert zuweisen. Innerhalb einer Klasse garantiert nicht, ob es außerhalb geht, weiß ich nicht.

Nebenbei kommt es unter PHP 4 glaub ich (oder 5, weiß ned mehr so genau) zu einigen... seltsamen Fehlern, wenn man mit Referenzen arbeitet.

Versuche einfach mal, alle Vorkommnisse von $this durch irgendwas anderes zu ersetzen.

DGL-luke 24. Nov 2006 16:08

Re: [PHP]"Cannot re-assign $this" - Fehler
 
Klar - in Delphi würdest du dir auch ans Hirn langen, wenn jemand versucht, self zuzuweisen... du musst also immer über getref arbeiten. das sollte auch oben so gehen.

im übrigen kann ich nur 3of8 zustimmen und sagen: gaaaanz böser hack...

Daniel G 24. Nov 2006 16:12

Re: [PHP]"Cannot re-assign $this" - Fehler
 
Zitat:

Zitat von DGL-luke
du musst also immer über getref arbeiten. das sollte auch oben so gehen.

Aber nicht in der markierten Zeile. Sonst hätte ich ja nicht gepostet. :wink:

Soweit ich weiß, sollte das unter PHP 4 noch wunderbar funktioniert haben. In PHP 5 geht das nicht mehr.

In einem Forum habe ich das hier gefunden:

Zitat:

Cannot re-assign $this

Das ist das klassische "Die Anwendung wurde für php/4 geschrieben, Du benutzt aber php/5" Problem.

Abhilfe: auf php/4 zurücksteigen.
Super, kann ich meinem Hoster ja vorschlagen... :wall:

3_of_8 24. Nov 2006 16:16

Re: [PHP]"Cannot re-assign $this" - Fehler
 
Wie gesagt: Nimm nicht $this, sondern was anderes und versuch mal, irgendwie dieses Referenzengefummel zu vermeiden...

Daniel G 24. Nov 2006 17:13

Re: [PHP]"Cannot re-assign $this" - Fehler
 
Hm, hab' deinen Vorschlag in die Tat umgesetzt, 0815, jetzt funktioniert's. Danke dir. :wink:

Stellt sich die Frage: Warum hat der Autor "$this" genommen? :gruebel:

3_of_8 24. Nov 2006 17:19

Re: [PHP]"Cannot re-assign $this" - Fehler
 
Ist doch offensichtlich: Um arme User zu ärgern. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz