Klassenaufruf mit :: und Initialisierung erst in der Klasse... Ist das Käse?

  • Themenstarter Themenstarter Bailor
  • Beginndatum Beginndatum
B

Bailor

Hallo,

Ich bastle mir grad eine Datumsklasse, und hab mir nun folgendes gebaut: (stark eingekürzt)
PHP:
class Date_default {
	var $defaultFormat = 'Y-m-d';
	function convert($format, $timestamp) {
		$datum = date($format, $timestamp);
		return $datum;
	}
}

class Date {
	var $classHandler;
	
	function Date() {
		$this->classHandler = new Date_default();
	}
	
	function parse($format=FALSE, $timestamp=FALSE) {
		$this = new Date();
		return $this->classHandler->convert($format, $timestamp);
	}
}

echo Date::parse();
Der Vorteil dieser Methode ist, dass man überall im Rest des Programms ganz einfach sich ein Datum mit Date:: parse() umwandeln kann, ohne dass ich zuvor die Klasse initialisieren muss, und ggf. in andere Klassen via global einbinden. (bin halt ein fauler Hund..)

Aber jedesmal beim Aufruf mit Date:: parse() werden zwei neue Instanzen von Date und Date_xxx erstellt... verlangsamt das? (diese klassen sind ungekürzt ned so leer wie oben)

achja: darf ich den klassennamen Date (großgeschrieben) überhaupt verwenden? mir meckert zwar des php ned, aber kleingeschrieben date() ist ja ne von php definierte funktion...
 
Zuletzt bearbeitet von einem Moderator:
Grundsätzlich würde ich es mal so formulieren:

Tue was du willst, solange es funktioniert und du es auch noch in 6 Monaten kapierst.

Aber:
Performanceinbusen die durch so einen "Schnipsel" verursacht werden sind im einzelnen nicht schlimm, Was passiert aber wenn du hundert solcher "Schnipsel" hast und das ganze Script auch noch gut genutzt wird. es summiert sich halt alles.

Befehle, die sehr schnell mit resevierten Befehlen verwechselt werden können sind immer eine Fehlerquelle, wenn man schnell was coden will. Besser ist es eigene unverwechselbare Befehle zu nehmen.
 
hehe, danke für die Antwort... hab mich inzwischen schon dafür entschieden, obiges in leicht abgeänderter Form zu verwenden... und in 6 Monaten kapieren werd ich das hoffentlich schon noch, vor allem da ich eigentlich (fast) immer versuche gut zu dokumentieren... ;-)

Viele dieser Schnipsel hab ich nicht, und es sollte sich wohl lohnen, da ich solch Datums-Funktionen sowohl bei verschiedenen wie auch in einzelnen Projekten relativ oft benötige...
diese extra Klasse erspart einiges an Code in anderen Klassen, verkleiner entsprechend diese... somit könnte das Performance-mäßisch auch schon wieder egal sein!? (und is wenn dann aber ja wohl eh eher minimal)


Zu obigen Code nochmal: Hat jemand eine Meinung dazu, eine Klasse aus sich selbst zu initialisieren?
 
Bailor hat gesagt.:
Zu obigen Code nochmal: Hat jemand eine Meinung dazu, eine Klasse aus sich selbst zu initialisieren?
Das ist zumindest nicht im Sinne der OOP. Du druchbrichst damit die Kapselung. Meine Meinung: Mir gefällt es nicht. Man sollte sich schon entscheiden, ob man objektorientierten oder prozeduralen Code schreibt.

Eine schöne Meinung dazu hat Gamma mit seinem Singleton veröffentlicht. Da hat das Instanziieren in einer statischen Methode aber einen ganz anderen Sinn. Aber auch Singletons sollten nur nach sehr gründlicher Überlegung eingesetzt werden.

Gruß hpvw
 
Zurück