SetaPDF
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 23.06.2008, 20:51   #1
TP-Veteran
 
Benutzerbild von manuelito
 
Registriert seit: Sep 2002
Ort: Winterthur
manuelito hilft, wo's gehtmanuelito hilft, wo's gehtmanuelito hilft, wo's geht

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
Angehängte Dateien
Dateityp: zip test.zip (4,0 KB, 8x aufgerufen)
__________________
Wer sabotiert eigentlich ständig meine Signatur?
manuelito ist offline   Mit Zitat antworten


Alt 23.06.2008, 23:21   #2
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
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 );
    }

Rizzo ist gerade online   Mit Zitat antworten
Alt 23.06.2008, 23:56   #3
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
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?
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 24.06.2008, 00:13   #4
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
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
Stuck Mojo ist offline   Mit Zitat antworten
Alt 24.06.2008, 00:21   #5
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Wenn Jan mal da ist, dann gleich mit durchschlagendem Erfolg.
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 24.06.2008, 00:43   #6
TP-Veteran
 
Benutzerbild von manuelito
 
Registriert seit: Sep 2002
Ort: Winterthur
manuelito hilft, wo's gehtmanuelito hilft, wo's gehtmanuelito hilft, wo's geht
Zitat:
Zitat von Stuck Mojo Beitrag anzeigen
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?
manuelito ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Bug in __set() ? [PHP] Bug in __set() ?
« Funktion über Variable der Oberklasse aufrufen | Bytestring to Image »

Stichworte
magische methode, oop, php, __set

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:04 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67