PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |
|

21-10-2009, 20:49
|
phpMorpheus2
Registrierter Benutzer
|
|
Registriert seit: Apr 2007
Beiträge: 646
|
|
Eine Klasse in jeder Klasse verfügbar machen
Hi.
Ich habe eine Klasse für Fehleranzeige entworfen.
Wenn nun z.B. eine andere Klasse diese Fehleranzeigeklasse benutzen will,
muss ich sie neu instanzieren
PHP-Code:
$noticeError = new FW_Notice("error");
Kann ich diese deklaration irgendwie in jeder Datei verfügbar machen ohne Sie überall reinschreiben oder verlinken zu müssen?
Danke
EDIT:
Vll. Global erreichbar machen ?
Geändert von phpMorpheus2 (21-10-2009 um 20:51 Uhr)
|

21-10-2009, 20:52
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
Redest du jetzt von der Deklaration der Klasse an sich, oder von der konkreten Instanz?
Wenn du ersteres meinst, dann könnte autoloading dir weiterhelfen, und wenn du letzteres meinst, solltest du dich mit dem Singleton-Pattern beschäftigen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

21-10-2009, 20:57
|
phpMorpheus2
Registrierter Benutzer
|
|
Registriert seit: Apr 2007
Beiträge: 646
|
|
Zitat:
Zitat von wahsaga
Redest du jetzt von der Deklaration der Klasse an sich, oder von der konkreten Instanz?
Wenn du ersteres meinst, dann könnte autoloading dir weiterhelfen, und wenn du letzteres meinst, solltest du dich mit dem Singleton-Pattern beschäftigen.
|
Von der Instanz.
Denn jeder Fehler wird in dieser Instanz gespeichert und gemeinsam ausgegeben.
Es wäre so, als wenn ich in der index.php die Klasse instanziere und alle includeten Dateien könnten diese "gemeinsam" nutzen.
Kann ich auf die Übergeordnete Ebene (auf die Index.php) und Ihrer instazierung zugreifen?
|

21-10-2009, 21:05
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
|
|
Du suchst das Singleton-Pattern. Oder das Registry Pattern (das im Grunde auch nur ein Singleton Pattern ist). Oder du packst sowas in eine statische Klasse. Aber das müsstest du eigentlich alles schon längst wissen.
|

21-10-2009, 21:10
|
phpMorpheus2
Registrierter Benutzer
|
|
Registriert seit: Apr 2007
Beiträge: 646
|
|
Ich schaue mir das zendframework immer an bevor ich etwas größeres angehe.
Jedoch haben zend das immer nur über die exceptions laufen welche zwar sowieso immer seperat für jede Klasse erstellt werden, aber nicht mein Problem lösen.
Eine übergeordnete statische Klasse kann ich genausowenig ansteuern wie eine instanzierte Klasse, wenn man eine übergeordnete instanzierte Klasse ebend nicht ansteuern kann.
EDIT:
Und klar, ich könnte erben, aber dann müsste ich wieder coden.
Ich dachte nur, vielleicht gibt es eine andere Lösung.
|

21-10-2009, 21:14
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
|
|
Zitat:
Zitat von phpMorpheus2
Ich schaue mir das zendframework immer an bevor ich etwas größeres angehe.
Jedoch haben zend das immer nur über die exceptions laufen welche zwar sowieso immer seperat für jede Klasse erstellt werden, aber nicht mein Problem lösen.
Eine übergeordnete statische Klasse kann ich genausowenig ansteuern wie eine instanzierte Klasse, wenn man eine übergeordnete instanzierte Klasse ebend nicht ansteuern kann.
|
Was hat das ZF über Exceptions laufen? Und was meinst du mit "übergeordnet"? Und warum solltest du etwas nicht "ansteuern" können? Eine statische Klasse –*wenn deklariert –*kannst du von überall ansprechen. Und die ist für solche Zwecke ideal …*oder eben Singleton –*wie schon erwähnt.
|

21-10-2009, 21:18
|
phpMorpheus2
Registrierter Benutzer
|
|
Registriert seit: Apr 2007
Beiträge: 646
|
|
Zitat:
Zitat von unset
Was hat das ZF über Exceptions laufen?
|
Eben die Fehleranzeige.
Ich habe im zend keine seperate anzeigemöglichkeit gefunden welche versch. notizen empfangen kann und gemeinsam ausgibt.
Zitat:
Zitat von unset
Und was meinst du mit "übergeordnet"?
|
Die index.php ist eine Ebene über den zu includenden Dateien.
Zitat:
Zitat von unset
Und warum solltest du etwas nicht "ansteuern" können? Eine statische Klasse –*wenn deklariert –*kannst du von überall ansprechen. Und die ist für solche Zwecke ideal …*oder eben Singleton –*wie schon erwähnt.
|
Da werd ich doch gleich mal schaun.
|

21-10-2009, 21:21
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
|
|
Zitat:
Zitat von phpMorpheus2
Eben die Fehleranzeige.
Ich habe im zend keine seperate anzeigemöglichkeit gefunden welche versch. notizen empfangen kann und gemeinsam ausgibt.
|
Es gibt zum Beispiel den Form Errors View Helper. Wenn der dir nicht reicht, könntest du dir auch einen View Helper mit weniger Handgriffen selbst bauen, der das was du machen willst, erledigt.
Was du über Exceptions und FehlerMELDUNGEN erzählst ist natürlich Blödsinn. Das Handling von kaputten Daten, gescheiterten Transaktionen und sonstigen nicht erwünschten Effekten läuft –*und das macht man halt so –*über Exceptions. Dass die im Super-Ultra-Basic-Beispiel komplett als "Fehlermeldung" ausgegeben werden, ist nur eine erleichterung für den Entwickler. Auf Live-Systemen gibt man sowas natürlich nicht mehr aus.
Geändert von unset (21-10-2009 um 21:23 Uhr)
|

21-10-2009, 21:35
|
phpMorpheus2
Registrierter Benutzer
|
|
Registriert seit: Apr 2007
Beiträge: 646
|
|
Aha.
Ich kann aber doch nicht in einer statischen Klasse eine dynamische Variable speisen.
Oder?
Also ich meine, wenn ich eine klasse habe und eine statische methode aufrufe und einen wert übergebe, kann die klasse ja nicht die übergebenen Werte z.B. in eine Array speichern und per statischem methodenaufruf die mitlerweile gefüllte Array ausgeben.
|

21-10-2009, 21:36
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
|
|
Doch. Und eigentlich gilt auch: Versuch macht kluch –*Lieber ausprobieren statt anzunehmen und dann doof zu Fragen.
|

21-10-2009, 23:10
|
phpMorpheus2
Registrierter Benutzer
|
|
Registriert seit: Apr 2007
Beiträge: 646
|
|
Natürlich probiere ich es auch aus bevor ich es behaupte.
Vll. mache ich etwas falsch
PHP-Code:
class FW_Notice
{
public $bla = array();
public static function add($key)
{
self::$bla[] = $key;
}
public static function show()
{
print_r($this->bla);
}
}
|

21-10-2009, 23:39
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
|
|
Na, dann lies mal die Fehlermeldungen, die dir um die Ohren gehauen werden!
|

21-10-2009, 23:50
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 3.296
|
|
Wenn ich das schon höre: Singleton und "statische Dinger".....   
So wie ich das sehe soll ja "nur" irgendwas geloggt werden.
Da ist doch eigentlich sowas wie das "Observer Design Pattern" angesagt. Und typischer Weise werden dem Subject die Observer per Setter überreicht.
|

22-10-2009, 00:01
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
|
|
Für den Verwendungszweck ja, für den Betreff nicht. Und mehr lese ich beim TO auch nicht mehr wirklich
Ich bin auch kein großartiger Freund des Singletons, aber ist immer noch wesentlich einfacher zu implementieren als eine (halbwegs saubere) Observer-Struktur –*vor allem bei dem Kenntnisstand …
|

22-10-2009, 03:10
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
|
|
Observer sehe ich hier nicht. Er will in seiner Applikation an jeder Stelle im Code einen Errorlogger füttern können. Wer soll da wen observieren?
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|