php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.03.2007, 17:17  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Sie vereinfachen das Leben. Patterns sind eigentlich nur Vorlagen für häufig auftretende Probleme. Wenn du zB eine Session-Klasse haben möchtest, dann wäre es schlecht, wenn du jedes mal eine neue Instanz aufmachst, da ja jede Instanz eh nur auf die selbe Session zugreifen würde. Da wäre das Singleton-Pattern sinnvoll, dass dir immer nur ein und die selbe Instanz zurück gibt.

PHP-Code:
class Session {
  protected static 
$_instance null;

  private function 
__construct ();
  private function 
__clone ();

  public static function 
getInstance ()
  {
    if (
self::$_instance=== null) {
      
self::$_instance = new self ();
    }
    return 
self::$_instance;
  }

  
// Session-Code
}

$sessionObject Session::getInstance (); 
Jetzt kannst du dir sicher sein, dass du immer nur die identische Instanz einer Klasse bekommst. Für andere Probleme gibts eben andere Pattern.

Insofern: Du brauchst Patterns eigentlich nicht, aber sie haben sich für wiederkehrende Probleme als nützlich erwiesen und wieso denn auch das Rad neu erfinden
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.03.2007, 12:54  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo KingCrunch,

wenn ich nochmal kurz auf deinen Beitrag eingehen darf:

Das Schichten-Modell ist bereits ein von Martin Fowler und anderen Autoren beschriebenes Pattern. Mit einer "blöden MySQL-Klasse", die du einfach nur einsetzt schaffst du bereits eine Abstraktions-Schicht zwischen Datenbank und Anwendung, weil sich die Anwendung z.B. nicht mehr um das Connection-Handling kümmern muss. Jede weitere Schicht, wie ein Data-Mapper, ist für sich genommen auch nur eine weitere "blöde Klasse", aber im Gesamtkonzept gliedert es sich in ein Pattern mit dem Namen "Schichten-Architektur" ein.
Es geht ja nicht darum, dass jeder besser weiß, was nun ein Pattern ist, sondern Pattern sind "auch nur" ein Konzept, bzw. konzeptioneller Lösungs-Ansatz - wie du bereits ausgeführt hast - für ein Problem. Einfach gesprochen arbeitet jeder bereits unbewusst mit dem Schichten-Abstraktions-Pattern, wenn er versucht einzelne, aber gemeinsam genutzte Bereiche auszugliedern. Ist das nun eine Klasse, oder eine Funktion ist dabei jedoch egal.

Grundsätzlich solltest du jedoch nicht von der Hand weise, dass OOP nichts ohne OOD ist. Es macht keinen Sinn Klassen und Objekte zu definieren, ohne auch zu beschreiben, wie die Beziehung zwischen diesen Objekten ist und welche Rolle diese im Gesamtkonzept spielen. OO wurde unlängst auch deswegen eingeführt, weil man damit die Realität (z.B. Kunde und Verkäufer und deren Beziehung) besser abbilden kann.

So long...
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 16.03.2007, 14:03  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Hab ich "blöde Klasse" gesagt? ^^ Naja, egal. Zumindest machen für mich Schichten-Abstraktionen noch keine Pattern. Soweit ich das verstanden habe (und da darfst du gerne wieder drauf ansetzen im schlimmsten Fall lern ich was dazu ) einfach "Lösungsbeispiele" für wiederkehrende Probleme.

Das OOP ohne OOD nicht wirklich ist, liegt scho ma daran, dass sich beide gegenseitig bedingen. Wenn ich eine Klasse schreibe, dann steht sie irgendwie in Beziehung zu anderen Klassen oder im einfachsten Fall zu sich selbst. Wenn ich andersherum ein Design erstelle, folgen daraus später die Klassen.

Zu deinem letzten Satz: Hab da irgendwann einen netten Kurzbeitrag drüber gelesen, was OO eigentlich soll, weils eigentlich für einen Compiler und Prozessor ziemlich katastrophal ist (Performance). Es gibt ja nichts, was weiter von einer Prozessorarchitektur entfernt sein kann, als Objekte, weswegen Compiler das dementsprechend übersetzen müssen. Es liegt aber in der Natur des Menschen Objekte und deren Eigenschaften und Fähigkeiten leichter erfassen zu können.

Aber wir schweifen wieder ab
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 16.03.2007, 14:34  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo KingCrunch,

Zitat:
Hab ich "blöde Klasse" gesagt? ^^ Naja, egal.
Nein hast du nicht, war nur ein rhetorisches Mitel von mir. :wink:


Zitat:
Zumindest machen für mich Schichten-Abstraktionen noch keine Pattern. Soweit ich das verstanden habe (und da darfst du gerne wieder drauf ansetzen im schlimmsten Fall lern ich was dazu ) einfach "Lösungsbeispiele" für wiederkehrende Probleme.
Da muss ich dich enttäuschen. Lies mal den Fowler und du wirst sehen, dass das definitiv ein Pattern ist um Software zu strukturieren.
Wenn du dir mal die Implementierung des TCP/IP-Stacks als Beispiel nimmst, ist das quasi so eine Schichtung. Denn ob ich die Daten über Kupfer oder Glasfaser übertrage ist dem kompletten Ablauf der Datenübertragung egal. Es wird einfach eine Schicht mit ihren Schnittstellen nach oben unt unten ausgetauscht und die Daten können weiter fließen. Damit bleibt man durch eine Schichtung der Protokollebenen flexibel für andere Medien und andere Abläufe (oder auch weitere Schichten) offen.

Siehe http://www.martinfowler.com/bliki/La...rinciples.html.

[EDIT]: Oder auch

- http://www.martinfowler.com/eaaCatal...viceLayer.html
- http://www.codeproject.com/gen/bookr...peaareview.asp
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 16.03.2007, 14:50  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Link is tot ^^ Zum Rest werd ich erst etwas sage, wenn ich weiß, dass ich mich in eine Sackgasse verrenne
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 16.03.2007, 14:53  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo KingCrunch,

Zitat:
Link is tot ^^
... weil das Board den Punkt dahinter in die URL übernimmt. Solltest du aber gesehen haben... :wink:
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 16.03.2007, 14:57  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Nö, hab aber auch net drauf geachtet, nur das 404 gesehn und setz selbst meine Links immer manuell, wo dann sowas net auftaucht Habs mal gebookmarkt, schau ich mir heut Abend an, thnx
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
eigene Klasse für mySql PW und UN Reen_Sc Datenbanken 4 09.07.2008 16:15
Variable aus Klasse herausbekommen GSJLink PHP Tipps 2008 7 16.02.2008 22:25
PHP + MySQL zwei Instanzen vertragen sich nicht Leisurelarry PHP Tipps 2008 11 04.10.2007 16:45
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
tutorial mysql klassen im oop projekt phpdummi Beitragsarchiv 4 17.01.2007 20:17
Funktionsweise der Klasse => Verständnisprüfung... Canni PHP Tipps 2007 2 18.12.2006 11:42
MySQL - Klasse: Wie da mysql_close benutzen Igäl PHP Tipps 2006 5 01.10.2006 23:09
mysql klasse - handling mehrerer connections mrSpok PHP Tipps 2006 5 14.04.2006 01:05
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
mysqli_multi_query() => MySQL server has gone away bicpi PHP-Fortgeschrittene 10 16.09.2005 03:02
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
Habe Mysql KLasse geschrieben, aber... Spike_php PHP-Fortgeschrittene 10 27.03.2005 09:15
[Erledigt] PHP5 &a m p; MySQL Datenbanken 5 01.08.2004 05:47
MySQL => Excel mit PHP PHP Tipps 2004 4 31.07.2004 12:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php \identische instanz\, php oop session beispiele, php5 mysql klasse beispiel

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.