![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Innerhalb einer Methode einer Klassenvariablen einer anderen Klasse etwas zuweisen ohne die Klasse vorher instanziert zu haben.
Wuah hab ich ein Brett vorm Kopf, aber selten dick. Mein Problem ist besser am Beispiel zu erklären. Ich hab ne Klasse "Auth", die mein Login checkt und bei falschen Daten der Error-Klasse "Error" und der darin enthaltenen Klassenvariable $_error (Array) einen String übergeben und anhängen soll ('Fehlerhafte Logindaten'). Klappt alles nicht, sprich das Array bleibt leer. Mein Quellcode ohne Fehlermeldungen: index.php PHP-Code:
PHP-Code:
PHP-Code:
Code:
Notice: Undefined variable: ErrorHandling in ...\framework\Auth.php on line 22 Fatal error: Call to a member function pushError() on a non-object in ...\framework\Auth.php on line 22 An dem Manual orientiert ergibt sich mir die Frage, wenn das Auslesen der Static-Variable geht, kann ich sie nicht auch setzen? Und wenn ja, wie?
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #2 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.599
|
Jou. Es gibt ja kein Objekt ErrorHandling. Du nutzt das, ohne es vorher instanziiert zu haben.
Füge der Klasse Auth doch eine Klassenvariable hinzu und greife darauf zu. PHP-Code:
PHP-Code:
Grüße Ben. |
|
|
|
|
|
Nach oben #3 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Mja bisher ist das nur rumgeteste, aber ich will eigentlich ohne ein Objekt erstellen zu müssen auf dieser Variablen "rumschreiben" deswegen muss es doch möglich sein, dass mit static zu tun oder? nur auslesen einer static-variablen ohne die möglichkeit des wertzuweisens ist doch fast schon sinnlos
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #4 |
|
me pro ok?
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
|
Warum nicht einfach im Error-Handler eine statische Methode erzeugen, die Objekt von sich selbst erstellt und dann damit arbeitet?
PHP-Code:
|
|
|
|
|
|
Nach oben #5 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Hey die Idee ist gut, dass probier ich gleich mal.
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #6 |
|
me pro ok?
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
|
Ich habs wie folgt gelöst.
PHP-Code:
PHP-Code:
|
|
|
|
|
|
Nach oben #7 |
|
Erfahrener Benutzer
Registriert seit: 19.08.2005
Beiträge: 113
|
Warum nicht einfach singleton? Du wirst doch eh nur eine Instanz der Klasse brauchen, das ist doch das Typische Anwendungsgebiet.
__________________
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning. |
|
|
|
|
|
Nach oben #9 | ||
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Error.php
PHP-Code:
Mit $this Zitat:
Zitat:
__________________
I did it my way - Senseless-Blog |
||
|
|
|
|
|
Nach oben #10 |
|
me pro ok?
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
|
In statischen Methoden gibt es kein $this, das gibts nur im Objektkontext, d.h. wenn ein Objekt erzeugt wurde und dann darin gearbeitet wird.
Setz' $_error auf static (private static $error), dann kannst du in der Methode mittels self::$_error drauf zugreifen. |
|
|
|
|
|
Nach oben #11 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.599
|
Schon ohne $this und mit self::, dazu dann noch die Klassenvariable public static machen und fein. Oder halt wie Lars als Konstanten ablegen.
Nochmal genau schauen: [EDIT] @Lars: Sicher, dass private static funktioniert? |
|
|
|
|
|
Nach oben #14 |
|
Gast
Beiträge: n/a
|
wenn's denn mit singleton gemacht werden muss, und der errorhandler nicht einfach als konstruktorparameter übergeben werden soll, dann so:
PHP-Code:
die allgemeinen gefahren von singletons sollten halt klar sein. |