php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 14-07-2010, 12:33
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von combie Beitrag anzeigen
Und warum ist der Shop Singleton?
Singletons sind böse !

Und mal wieder:
Mache dich über "Dependency Injection" kundig.
(für alle, welche schon wieder darauf gewartet haben)
*räusper*

Ich wollte selbst schon damit anfangen, hab's dann aber doch sein lassen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (14-07-2010 um 12:46 Uhr)
Mit Zitat antworten
  #17 (permalink)  
Alt 14-07-2010, 12:40
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Aber eins würde mich noch interessieren.
Wieso sind Singletons nun böse?^^
Die Vererbung bleibt auf der Strecke. Ein wichtigen Kapitel der OOP grenzt du damit aus.
(OK, unter PHP5.3 ist das Problem durch erheblichen Aufwand lösbar, mit älteren Versionen nicht)

Häufig werden Singletons als $GLOBALS Ersatz verwendet. Da schleppt man trotz Paradigmenwechsel die alten Probleme mit.

Usw.
Zu diesem Glaubenskrieg gibts massig im Netz zu finden.



Beispiel:
Du schreibst einen Shop!
Dieser ist nur für einen Händler gedacht.

14 Tage später brauchst du noch einen Shop.
Also kommst du auf die Idee den Shop multi Mandanten fähig zu machen.
In dem Zuge baust du dir ein übergeordnetes SuperAdminTool für alle Shops.

Oha!
Da ist es schon: "für alle Shops"
Schluss, aus, mit Singleton!
(alles wieder umstricken, von Grunde auf)
__________________
Wir werden alle sterben
Mit Zitat antworten
  #18 (permalink)  
Alt 14-07-2010, 12:55
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

zumal das möglicherweise beim Shop noch einen kleinen Sinn haben mag - aber beim Angebot nicht mehr... jedenfalls nach meinem Verständnis hat doch ein Shop mehrere Sachen im Angebot ....
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #19 (permalink)  
Alt 14-07-2010, 14:00
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von eagle275 Beitrag anzeigen
zumal das möglicherweise beim Shop noch einen kleinen Sinn haben mag - aber beim Angebot nicht mehr... jedenfalls nach meinem Verständnis hat doch ein Shop mehrere Sachen im Angebot ....
Der Fehler beim TE besteht schon mal darin das die Shop Klasse mehrere oder einige Members oder Methoden aus der Angebotsklasse benötigt. Das ist schon mal ein ganz böser Software Design Fehler (dabei rede ich nicht von Design Patterns).

Bei einem Shop hat ein Singleton Pattern absolut null Sinn, ich schrieb ja schon, mir ist momentan auch noch kein Fall untergekommen wo ich wirklich nur eine einzige Instanz auf eine Klasse haben darf und auch wenn ich ne Weile drüber nachdenke fällt mir da nichts sinnvolles ein, was aber vieleicht auch daran liegen mag, dass ich noch nicht so lange mit OOP zu tun habe und mache.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
Mit Zitat antworten
  #20 (permalink)  
Alt 15-07-2010, 15:51
ThemBones
 Registrierter Benutzer
Links : Onlinestatus : ThemBones ist offline
Registriert seit: Nov 2005
Beiträge: 131
ThemBones ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von litterauspirna Beitrag anzeigen
und auch wenn ich ne Weile drüber nachdenke fällt mir da nichts sinnvolles ein
Ist wohl eines der am häufigsten genutzten Patterns. Spontan würde mir da bspw. ein logger einfallen
Mit Zitat antworten
  #21 (permalink)  
Alt 15-07-2010, 16:02
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von ThemBones Beitrag anzeigen
Spontan würde mir da bspw. ein logger einfallen
Den würde ich auch über Dependency Injection einbinden, dann kann ich in der Testphase einen zum Debuggen verwenden und im Produktiveinsatz einen anderen.

Das größte Missverständnis bei Singletons ist meiner Meinung nach die Verwechslung dieser beiden Fälle:
  • Ich brauche im Moment nur eine Instanz dieser Klasse.
  • Es darf unter allen Umständen jetzt und in Zukunft immer nur eine (und immer dieselbe) Instanz geben.

Der zweite Fall kommt nur sehr selten vor und lässt sich fast immer vermeiden bzw. umschiffen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #22 (permalink)  
Alt 15-07-2010, 16:40
ThemBones
 Registrierter Benutzer
Links : Onlinestatus : ThemBones ist offline
Registriert seit: Nov 2005
Beiträge: 131
ThemBones ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
  • Ich brauche im Moment nur eine Instanz dieser Klasse.
  • Es darf unter allen Umständen jetzt und in Zukunft immer nur eine (und immer dieselbe) Instanz geben.
Nun, es fängt schon dabei an die Begriffe "im Moment" oder "immer" auseinanderzuhalten und klar zu defninieren. Bezogen auf die Lebenszeit des Prozesses? Der Daten?

DI ist sicherlich eleganter. Meiner Meinung nach ist aber ein Logger, der genau in eine Datei schreiben soll, eine der wenigen Anwendungsfälle in der ein Singleton Sinn macht? (nicht, dass mir jetzt einer einen Strick draus dreht: "macht in wenigen Fällen Sinn" und "eines der am häufigsten genutzten Patterns" sind leider zwei Dinge, die sich nicht notwendigerweise ausschliessen).

Naja ist wohl zu einem gewissen Anteil Frage des persönlichen Geschmacks.
Ich bin dann mal weg, bevorzuge es jeglichem Glaubenskrieg aus dem Weg zu gehen bevor es soweit kommt
Mit Zitat antworten
  #23 (permalink)  
Alt 19-07-2010, 12:43
dakingno1
 Registrierter Benutzer
Links : Onlinestatus : dakingno1 ist offline
Registriert seit: Nov 2006
Beiträge: 149
dakingno1 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es hat sich ja mittlerweile eine sehr interessante Diskussion entwickelt.

Aber dass man Singletons sehr selten benutzt kann ich nicht bestätigen.
Hier mal ein paar Beispiele wo und warum ich die Klassen als Singleton benutze:

Functions.class
- Das ist eine Sammlung von unzähligen allgemeinen Funktionen. Die resultiert daraus, da das Projekt vorher strukturiert war und alle Funktionen statisch deklariert wurden um die dann aufzurufen. Sie wird nach und nach gekapselt, aber puntk ist, dort sammeln sich allgemeine Funktionen die an mehreren Stellen benötigt werden. Die Klasse ist ein Singleton, da ich nicht verschiedene Zustände der Klassenvariablen benötige o.ä. sondern einfach nur eine Möglichkeit haben möchte, um auf die Klasse zuzugreifen. Die Funktionen sind nicht mehr statisch, da einige Klassenvariablen initialisiert wurden, die in fas tallen Funktionen benötigt werden etc.

Model.class
- Ich benötige nur eine einzige Instanz, da ich immer auf dieselbe Datenbank zugreife

Router.class
- Eine Klasse die mir die entsprechenden Seitenaufrufe den entsprechenden Controllern zuordnet, etc.
Wieso sollte es kein Singleton sein?
Das Interpretieren des Seitenaufrufs geschieht einmalig, und die Werte werden dann aber an mehreren Stellen benötigt, also rufe ich dann entsprechende Klassenvariablen auf um die Werte zu erhalten. Mit Obejtken hätte ich immer andere Werte.

Request.class
- Eien Wrapperklasse die mir die Request Variablen escapet etc. Auch hier benötige ich keine Objekte, da es sich immer um dieselben Daten handelt.

Soviel dazu.
Ich freue mich über eure Meinungen und ideen, wieso und warum meine Ansicht evlt. falsch oder sogar richtig sind.

Vielen Dank im voraus.
Mit Zitat antworten
  #24 (permalink)  
Alt 19-07-2010, 13:06
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

@dakingno1: Das sind alles Beispiele für Situationen, wo man Singletons gerade nicht benutzen sollte. Warum, kannst du an verschiedensten Stellen selbst nachlesen, z. B. hier: Singleton pattern - Wikipedia, the free encyclopedia
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #25 (permalink)  
Alt 19-07-2010, 13:11
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Wenn man einmal begriffen hat, wie ein Hammer funktioniert, dann sieht die ganze Welt plötzlich wie ein Nagel aus!
__________________
Wir werden alle sterben
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
endlosschleife, klassen, php, singleton


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Klassen, die sich gegenseitig brauchen?! micronax PHP Developer Forum 10 28-06-2008 00:05
2 Scripte blockieren sich gegenseitig? Gpunkt PHP Developer Forum 3 20-12-2006 00:02
Subdomains gegenseitig Verlinken? Meillo SEO - Suchmaschinen Tricks und Tipps 4 01-04-2005 15:04
Spalten sich gegenseitig vergleichen lassen ... Innuendo SQL / Datenbanken 12 09-02-2004 01:18
klassen innerhalb von klassen verwenden rythms BRAINSTORMING PHP/SQL/HTML/JS/CSS 14 07-11-2003 10:19

Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:48 Uhr.