Hallo,
Singleton kommt aus Multithreading und ist in PHP daher kein echter Singleton nach dem ursprünglichen Sinn - sollte deshalb in PHP nicht verwendet werden
Singleton kommt aus Multithreading? Sorry, das ist Quark. Wenn man Multithreading betreibt, muss man bei Singletons besonders aufpassen, damit man nicht aus Versehen zwei davon bekommt oder irgend etwas anderes boeses passiert (siehe den Wikipedia-Artikel dazu) - aber vom Prinzip her werden Singletons grundsaetzlich auch in Programmen ohne Threading eingesetzt.
Letztendlich ist ein Singleton nur eine extravagante Moeglichkeit, globale Daten im Programm zu speichern - analog zu "normalen" globalen Variablen. Der Vorteil von Singletons ist, gegenueber globalen Variablen, dass man durch das OOP eine bessere Kapselung der Daten erreicht.
Natuerlich bleiben auch bei einem Singleton alle anderen Nachteile von globalen Variablen erhalten, d.h. es gibt sehr gute Gruende sich zweimal zu ueberlegen, ob man das wirklich einsetzen will oder nicht lieber auf etwas wie Dependency Injection setzt. Das hat aber nichts mit Threading zu tun.
Zu einem anderen Aspekt der obigen Aussage moechte ich nur folgendes sagen: Es gibt etliche andere Programmierkonzepte, die in PHP nicht 1:1 so sind, wie sie urspruenglich waren - das Argument, dass das in PHP anders ist, ist aber noch LANGE kein Grund, es in PHP nicht einzusetzen. Das Kriterium sollte doch letztendlich sein: Womit kann ich den besten, simpelsten, effizientesten, wartbarsten, etc. Code schreiben an dieser Stelle? Und _das_ sollte man einsetzen - und nicht eben auf Grund irgend einer puristischen Ideologie suboptimalen Code schreiben.
Abstrakte Methoden und Klassen sollten nicht verwendet werden
Wenn dieser "Experte" keine Begruendung dafuer geliefert hat, kannst Du das getrost ignorieren. Zwar braucht man meiner persoenlichen Erfahrung nach abstrakte Methoden und Klassen in PHP sehr selten (weil man das oft durch Interfaces besser machen kann), aber das heisst nicht, dass sie nicht grundsaetzlich nuetzlich sind. Und es ist garantiert nichts verwerfliches dabei, die zu verwenden.
Zusammengefasst: Ich halte beide Aussagen fuer Quatsch.
Viele Gruesse,
Christian
Mein "Weblog" [RSS]
Using XSLT to create JSON output (Saxon-B 9.0 for Java)
How to tell the difference between a science fan and a scientist.