Hallöchen.
Hatte ein Problem, konnts dann aber lösen, aber vielleicht kann mir den Grund jemand erklären:
Also, eine Funktion innerhalb einer Klasse gibt eine Referenz auf eine Member-Variable zurück:
Code: In Zwischenablage kopieren (nur IE)
Das funktioniert in PHP 4 bis Version 4.3.10 und PHP 5. Wenn ich also
Code: In Zwischenablage kopieren (nur IE)
tue, dann ändere ich tatsächlich mittels testRef die Membervariable.
Beim letzten Release 4.4.2 funktioniert das nicht mehr. Allerdings funktioniert da:
Code: In Zwischenablage kopieren (nur IE)
Das heisst ich erzeuge innerhalb getRef() eine Referenz auf $memberVar und gebe diese zurück.
Ist auch ok, allerdings ist das Verhalten (auch im Changelog) völlig undokumentiert. Bestimmt hängt das mit der speziellen Behandlung von $this zusammen, aber warum und wieso, und wieso klappts im 5er wieder ?
Danke schonmal für Eure Antworten :).
Gruß
konrad
dresden
Antworten
In PHP5 werden Referenzen i.A. viel weniger häufig benötigt, da Objekte da sowieso standardmäßig "per Reference" übergeben werden, und das ist auch gut, weil Referenzen in PHP schon immer Probleme bereitet haben.
Was sagt PHP 4.4 denn? Wird da eine Fehlermeldung gebracht?
2.
Hm, stimmt, das hab ich vergessen zu erwähnen daß PHP 4.4.2 keine Referenz sondern eine Kopie der Variable zurückgibt.
Also ohne Fehlermeldung.
Das mit dem Referenz-Problemen in PHP mag stimmen, allerdings find ichs absolut dämlich features einzubauen die dann ohne Vorwarnung geändert werden oder nicht richtig funktionieren.
Gruß
konrad
3.
Also ich würde ganz dreist behaupten, das ist eine Inkonsistenz, die die Entwickler da "aus Versehen" eingebaut haben ;) ... ganz im Ernst: diese Referenzen in PHP4 haben mir schon manches Kopfzerbrechen bereitet, das hat noch NIE so funktioniert, wie man es erwarten sollte. Da wunderts mich auch gar nicht, wenn sowas passiert.
Wenn Du die Möglichkeit hast, würde ich an Deiner Stelle komplett auf PHP5 umsteigen, ansonsten vielleicht mal ne Mail an die Entwickler und beschweren ;)
4.
Ja, genau das denk ich auch. Bin auch kurz davor das zu 'melden' ;). Der Bug wurde auch schon mal gemeldet, 2002 für Version 4.1-irgendwas, scheinbar wurde es dann gefixt und nun wieder eingebaut.
Da ich wirklich Tage mit diesem Mist rumgekämpft habe bin ich auch ein wenig sauer, ganz ehrlich ;)
Das Problem mit dem Umsteigen ist, das ich ein Framework für Webseiten habe, in das ich viel Arbeit gesteckt hab. Da nun ziemlich viele Hoster (im konkreten Fall 1und1, wo eine Kundenwebseite liegt und der Vertrag leider auch noch ne Weile läuft..., aber auch einige andere) auf die letzte PHP4.4.2 umgestiegen sind. Ein Umstieg auf einen Tarif mit PHP5 wäre auch wieder ziemlich viel Rumgenerve. Und ich bin der Meinung wenn ein Feature drinne ist, dann musses auch funktionieren! Ich mein, wenn sowas passiert, wird PHP den Ruf der Preiswert-Frickel-Sprache nie los. Und Referenzen konsistent in PHP4 einzubauen sollte nun wirklich nicht das Problem sein.
Danke trotzdem ;)
Gruß
konrad
5.
Zum Thema Hoster, auch wenn etwas Off Topic:
Viele "große Hoster" bieten Pakete für ca. EUR 20/Monat an, haben Mindestvertragslaufzeiten und dann auch noch alte Software (PHP4, MySQL ohne Transaktionen, etc.).
Bei kleinen Hostern gibt es vergleichbare Pakete bereits ab EUR 5/Monat, max. EUR 10,-/Monat, mit modernerer Software und ohne Mindestvertragslaufzeit.
Ein Umstieg lohnt also und hat sich finanziell - auch wenn beide Verträge 1 Jahr parallel laufen - nach wenigen Monaten armortisiert.
6.
Bin auch kein Freund von 1und1, Strato, und den anderen Schlünden ;). Sobald der Vertrag dort ausläuft wird die Seite woanders gehostet. Bin mit hosteasy eigentlich recht zufrieden, da man sich dort alles detailliert auswählen kann und dann vor allem für kleinere Projekte nur 2 Euro oder so bezahlt. Leider haben die noch kein PHP5.
Gruß
konrad
7.
och,bei hostpoint kann man sogar noch zwischen php5 und 4 wählen:-).
Bin aber sonst auch eher für kleinere, momentan grad bei genotec, und da bin ich bislang sehr zufrieden.