Tach!
ich bin leider noch ein Neuling in OOP-Programmierung und versuche Momentan eine "Error Handler"-Klasse zu schreiben.
Ein Error Handler ist im einfachen Fall ein einmaliges Gebilde. Von dem braucht man keine Instanz. Also tut es eine Klasse mit statischen Mitgliedern. Es sei denn, du hast vor, den Error Handler an die jeweiligen Fehler verursachenden Elemente durchzureichen, weil du gern für jeden Programmteil ein eigenes Logging haben möchtest. In deinem Fall gehts dir aber darum, den Standard-PHP-Handler zu ersetzen. Das ist eine quasi statische Funktion und da tut es eine statische Klasse.
Nun hab ich das Problem, dass man bei der Anmeldung der Funktionsnamen nur statische Methoden verwenden kann.
//Anmeldung der Methdonnamen
set_error_handler('errorHandler');
Nein, set\_error\_handler() möchte etwas vom [Pseudo-Typ callable](http://de2.php.net/manual/en/language.types.callable.php) übergeben bekommen. Das kann alles mögliche sein, vom Funktionsnamen über statische und Objektmethoden bis zu anonymen Funktionen.
> Da ich meiner Klasse aber die Pfadangabe variabel angeben kann, hab ich jetzt das Problem, dass ich diese nicht der statischen Methode übergeben kann, zumindest wüsste ich jetzt nicht wie.
Du brauchst keien Instanz. Eine Klasse kann auch statiche Eigenschaften haben. (Für sttiche Eigenschaften und Methoden gibt es das Schlüsselwort static. Das wird auch angemeckert, wenn man static weglässt auf auf solche Eigenschaften statisch zugreift. Error\_reporting auf E\_ALL stellen und gegebenenfalls noch E\_STRICT hinzufügen.) Einer statische Eigenschaft kann man von außen Werte setzen, wenn sie public ist. Es geht auch ein statischer Setter, aber der ist im Prinzip sinnlos, wenn man in ihm auch nichts weiter macht, als den Wert zu setzen.
> Gibt es hier eine Möglichkeit die Variable an die statische Methode zu übergeben oder bin ich generell auf dem falschen Dampfer.
An den Error-Handler nicht, denn der wird vom System aus aufgerufen und dieser Aufruf ist nicht konfigurierbar.
> Über einen Lösungsvorschlag oder einen Ansatz wie man die Klasse richtig schreiben könnte, wäre ich euch sehr verbunden. Hier nochmal die gesamte Klasse, unter der Klasse befindet sich noch normaler ausführbarer Code um die Klasse zu testen.
Hab ich mir jetzt nicht im einzelnen angeschaut. Wenn du aber eine Instanz haben möchtest und nicht alles statisch, dann kannst du die Instanz auch privat erzeugen, von einer statische Initialisierungsfunktion aus. Der kannst du auch den Pfadwert übergeben.
dedlfix.