Moin,
ich stehe bei dem Framework, welches ich programmieren will, vor der Frage, ob ich bei den meisten Klassen statische Methoden oder Instanzmethoden verwenden soll.
Meine momentane Meinung ist, dass Instanzmethoden nur dann wirklich Sinn machen, wenn man auch mehrere Instanzen von etwas haben könnte, also z.B. "User" oder "Post".
Es werden immer nur abgeleitete Klassen verwendet, damit man diese für das jeweilige Projekt anpassen kann.
Beispiel:
Sehr häufig verwende ich die Klasse "Error", welche eine Fehlermeldung anzeigt. Da das Skript bei einem Fehler abgebrochen wird und man so nicht mehrere Fehler gleichzeitig haben kann, macht also eine statische Methode mehr Sinn, weil man nicht extra eine Instanz braucht. Dafür würde ich aufrufen \Error::error(); Die Error-Klasse ist von \Base\Error abgeleitet und selber leer. Der Nachteil daran ist, dass man theoretisch noch immer \Base\Error::error() aufrufen kann, was man ja eigentlich nicht soll und das evtl. nicht ganz so professionell ist.
Wenn ich das als Instanzmethode machen will, müsste ich ganz am Anfang von der Error-Klasse eine Instanz erzeugen, diese in einer Klasse "ServiceManager" speichern und dann bei einem Fehler immer $serviceManager->get('error')->error(); aufrufen. Das hat wiederum den Nachteil, dass man mehr tippen muss und der String 'error' keine Autovervollständigung hat.
Also haben beide Wege ihre Nachteile. Was soll ich tun?
ich stehe bei dem Framework, welches ich programmieren will, vor der Frage, ob ich bei den meisten Klassen statische Methoden oder Instanzmethoden verwenden soll.
Meine momentane Meinung ist, dass Instanzmethoden nur dann wirklich Sinn machen, wenn man auch mehrere Instanzen von etwas haben könnte, also z.B. "User" oder "Post".
Es werden immer nur abgeleitete Klassen verwendet, damit man diese für das jeweilige Projekt anpassen kann.
Beispiel:
Sehr häufig verwende ich die Klasse "Error", welche eine Fehlermeldung anzeigt. Da das Skript bei einem Fehler abgebrochen wird und man so nicht mehrere Fehler gleichzeitig haben kann, macht also eine statische Methode mehr Sinn, weil man nicht extra eine Instanz braucht. Dafür würde ich aufrufen \Error::error(); Die Error-Klasse ist von \Base\Error abgeleitet und selber leer. Der Nachteil daran ist, dass man theoretisch noch immer \Base\Error::error() aufrufen kann, was man ja eigentlich nicht soll und das evtl. nicht ganz so professionell ist.
Wenn ich das als Instanzmethode machen will, müsste ich ganz am Anfang von der Error-Klasse eine Instanz erzeugen, diese in einer Klasse "ServiceManager" speichern und dann bei einem Fehler immer $serviceManager->get('error')->error(); aufrufen. Das hat wiederum den Nachteil, dass man mehr tippen muss und der String 'error' keine Autovervollständigung hat.
Also haben beide Wege ihre Nachteile. Was soll ich tun?
Kommentar