 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
23.06.2008, 20:51
|
#1
|
|
TP-Veteran
Registriert seit: Sep 2002
Ort: Winterthur
|
Bug in __set() ?
Hallo,
ich versuche, innerhalb von __set() in meiner Klasse "View" auf die Methode "set" (der Name ist egal, es funktioniert nie) im "Dictionary" Objekt zuzugreifen, dass in der Property "$data" gespeichert ist.
Hier gibt mir PHP allerdings eine Fehlermeldung aus, dass $this->data kein Objekt ist und zwar immer, wenn ich __set() in View ausführe. Kommentiere ich da die 20. Zeile aus und debuge $this->data, dann ist das ein Dictionary Objekt, PHP scheint aber nicht dieser Meinung zu sein intern.
Kann mir bitte jemand diesen Code testen, ob das bei ihm ebenfalls der Fall ist oder ob ich hier etwas grundlegendes falsch mache?
(Verzeichnis einfach auf den Testserver legen und die test.php aufrufen).
Meine PHP Version ist 5.2.5, ich bin mir ganz sicher, dass das vorher nicht der Fall war.
Danke für die Mithilfe.
Gruss,
Manolito
__________________
Wer sabotiert eigentlich ständig meine Signatur?
|
|
|
23.06.2008, 23:21
|
#2
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Hallo Manolito,
__set() wurde ja aus Gründen der Sicherheit eingeführt, deswegen kann man da nicht "pauschal" Code ausführen lassen. Du musst schon abfragen welchen Bezeichner $key hat und entsprechend Code ausführen.
Versuch mal ob das hier funktioniert:
PHP-Code:
public function __set( $key, $value ){
if ($key == 'menu')
{
$this->data->set( 'hello', 'testvalue' );
debug( $this->data );
}
}
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
|
23.06.2008, 23:56
|
#3
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Hut ab, da bin ich nun auch nicht drauf gekommen, da mit
print_r(get_class_methods($this->data));
alle Methoden ausgegeben wurden.
@manuelito
Hat es einen Sinn, warum Du mal mit den magischen Methoden arbeitest und dann wieder mit eigenen getter und setter Methoden?
|
|
|
24.06.2008, 00:13
|
#4
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Hi !
Der Fehler wird aber nicht vom äusseren $view->menu getriggert, sondern im Constructor der Klasse: $this->file = $file;
$this->file ist nicht definiert und löst somit __set aus, bevor $this->data initialisiert ist.
Gruß
Jan
|
|
|
24.06.2008, 00:21
|
#5
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Wenn Jan mal da ist, dann gleich mit durchschlagendem Erfolg. 
|
|
|
24.06.2008, 00:43
|
#6
|
|
TP-Veteran
Registriert seit: Sep 2002
Ort: Winterthur
|
Zitat:
Zitat von Stuck Mojo
Hi !
Der Fehler wird aber nicht vom äusseren $view->menu getriggert, sondern im Constructor der Klasse: $this->file = $file;
$this->file ist nicht definiert und löst somit __set aus, bevor $this->data initialisiert ist.
Gruß
Jan
|
Ach du Schande das war's, darauf wär ich nie gekommen!
Herzlichsten Dank!!!
@webcreate
normalerweise vermeide ich magische Methoden zugunsten klarer / offensichtlicher Schnittstellen. Einzig beim View mache ich eine Ausnahme, da darin hauptsächlich im HTML gearbeitet wird und die Daten für das Template meist eh klar sind und ich zugunsten der Einfachkeit auf den magischen Zugriff zurückgreife.
Danke an alle! 
__________________
Wer sabotiert eigentlich ständig meine Signatur?
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:04 Uhr.
|
 |