3Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
699
699
EMPFEHLEN
-
Hallo. Ich verpackte mal zwei Fragen hier in das Thema.
Ich habe eine Klasse die Fehler-Logs erstellt. Wenn ich mit write() ins Log schreibe geht alles einwandfrei. Wenn ich jedoch in einer anderen Funktion oder in einer anderen Klasse write() aufrufe, dann gehts nicht.
Jetzt stellt sich mir die Frage: Soll ich eine zweite Instanz mittelsaufrufen oder soll ich das einmal erstellte $phpLogger global machen? Letzteres soll kein guter Programmierstil sein (mukelt man). Die erstgenannte Variante ergibt bei mir jedoch die Nachricht:PHP-Code:$phpLogger = PHPLogger::getInstance();
$phpLogger->write("Beispiel", INFO, "Info-Logging");
Code :1
Notice: Object of class PHPLogger could not be converted to int in /ordner/php/classes/phpLogger.class.php on line 79
phpLogger.class.php (ab Zeile 78)
Was ist sinnvoller? Überall neue Instanzen erstellen oder einmal in der config.php instantiieren und das Objekt global verfügbar machen?PHP-Code:public static function getInstance() {
if (PHPLogger::$instance == 0) {
PHPLogger::$instance = new PHPLogger();
}
return PHPLogger::$instance;
}
Danke euch für die Hilfe!
Grüße suntrop
-
Die Klasse PHPLoffer ist wohl ein Singleton und deswegen wird durch den aufruf von
$phpLogger = PHPLogger::getInstance();
keine neue Instanz erstellt sondern die alte wird ausgegeben.
Die Variante kannst du ruhig benutzen.
Wenn du mehrer Klassen global verfügbar haben willst, könntest du das Registry-Pattern verwenden.
-
24.11.09 11:43 #3
- Registriert seit
- Dec 2004
- Beiträge
- 81
Zu deinem Fehler.
Ändere mal
zuPHP-Code:
if (PHPLogger::$instance == 0) {
PHPLogger::$instance = new PHPLogger();
}
und probiere es dann nochmalPHP-Code:
if (PHPLogger::$instance === NULL) {
PHPLogger::$instance = new PHPLogger();
}
-
Das mit dem Singelton ist mir später auch aufgefallen, war mir aber nicht ganz sicher. Ich steige (schon seit geraumer Zeit
) in die OO ein. Vom Registry-Pattern hatte ich schonmal gelesen, werde mir das mal genauer ansehen, wenn das weiterhilft. Ähnliche Situationen entstehen immer wieder 
Danke für die Hilfe mit der Fehlermeldung. Hat funktioniert. Jetzt wird geloggt, auch ohne Notice.
Grüße
suntrop
Ähnliche Themen
-
Performance- und Stilfrage: Ausgabe global oder per return zusammenbauen?
Von tomkruse im Forum PHPAntworten: 2Letzter Beitrag: 23.02.10, 15:35 -
Global Key Hook ist nicht global
Von Andreas_0815 im Forum C/C++Antworten: 2Letzter Beitrag: 04.11.07, 19:18 -
Klasse global für alle SWFs nutzen
Von p-flash im Forum Flash PlattformAntworten: 2Letzter Beitrag: 24.09.07, 15:29 -
Fabrikmuster oder abstrakte Klasse?
Von daddz im Forum PHPAntworten: 7Letzter Beitrag: 19.10.06, 13:09 -
Funktion oder Klasse?
Von fLoOmY im Forum PHPAntworten: 6Letzter Beitrag: 11.11.01, 21:22





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren