php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 05.04.2011, 19:25  
Neuer Benutzer
 
Registriert seit: 04.04.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
cocktailbar90 befindet sich auf einem aufstrebenden Ast
Standard "neuenFreundHinzufügen" in Konstruktor oder extra Methode?

Hallo liebe Forenmitglieder

Um mein Wissen in Objektorientierung auszuweiten, würde ich mir gerne zu Testzwecken ein kleines "social network" basteln. Das klingt jetzt furchtbar "cool", aber ich meine damit am Anfang erstmal nicht mehr, als neue Freunde in eine Datenbank einzutragen. Ich will weder das ganze online stellen noch mich mit facebook konkurrieren Ich dachte mir, es wäre einfach nur gut, um in dem Thema PHP und OOP fitter zu werden.

Bevor ich aber wirklich starten konnte, bin ich schon auf eine wichtige Frage gestoßen:

Es existiert bereits eine Klasse "Freund". Für jeden Freund sind Anschrift, Tel. etc. in einer mySQL-Datenbank abgelegt. Jetzt bin ich mir nicht sicher, ob ich die Methode "neuenFreundHinzufuegen" (Daten von HTML-Formular sollen in die DB geschrieben werden) als extra "function" der Klasse definieren soll, oder ob es sinnvoller ist, dieses gleich alles in den Konstruktor "__construct" zu implementieren.

Den zweiten Fall stelle ich mir so vor, damit mit folgender Anweisung bereits alles erledigt ist:

PHP-Code:
$neuer_freund = new Freund($_POST['vorname'], $_POST['nachname'], $_POST['strasse'] ... usw.); 
Was denkt ihr? Verstößt das gegen sämtliche Regeln der OOP? :P

Danke im Voraus,
Julian
cocktailbar90 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.04.2011, 20:09  
Benutzer
 
Registriert seit: 20.04.2009
Beiträge: 54
PHP-Kenntnisse:
Anfänger
Yanko befindet sich auf einem aufstrebenden Ast
Standard

Ich würde an deiner Stelle eine extra Methode dazu schreiben, weil die Klasse Freund stellt ja ein Model dar. (Es hält die Daten und man sollte damit die Daten in der DB speichern und auf sie Zugreifen können

PHP-Code:
class Freund
{
    protected 
$id;
    protected 
$name;
    
//...

    
public function __construct($id == null){
         
// holt daten aus der DB, wenn $id != null
    
}

    
// Getter und Setter 

    
public function insert(){
        
// fügt einen neuen datensatz ein
    
}

    public function 
update(){
        
// speichert änderungen
    
}


Und dazu noch eine ManagerKlasse

PHP-Code:

class FreundManager
{

    public function 
freundHinzufuegen($name$x){
         
$freund = new Freund();
         
$freund->setName($name)
                   ->
setX($x);
         
$freund->insert();
    }


So kannst du die Klasse FreundManager um Methoden erweitern und die Klasse Freund gegen SpezialFreund austauschen, wenn es die Methoden von Freund implementiert.
Yanko ist offline   Mit Zitat antworten
Alt 05.04.2011, 20:38  
Neuer Benutzer
 
Registriert seit: 04.04.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
cocktailbar90 befindet sich auf einem aufstrebenden Ast
Standard

hey cool ... daran habe ich noch garnicht gedacht, eine eigene Klasse "FreundManager" zu verwenden. Super Tipp, danke!

Das ist genau das, was ich gemeint habe: Die Übung in der OOP

Ich teste das mal und erstatte dann nochmal Rückmeldung!
cocktailbar90 ist offline   Mit Zitat antworten
Alt 05.04.2011, 20:44  
Benutzer
 
Registriert seit: 16.07.2010
Beiträge: 80
PHP-Kenntnisse:
Fortgeschritten
SinnlosS befindet sich auf einem aufstrebenden Ast
Standard

Hm, ein Freund ist doch genau genommen ein anderer User.
Eine Freundschaft stellt letzten Endes nichts anderes dar als eine Beziehung zwischen zwei User-Objekten. D.h. der Freund wäre keine eigene Klasse, sondern ein weiteres User-Objekt.
FriendManager als Klasse ist sinnvoll um die Beziehungen herzustellen. Aber was willst du in der Klasse Friend ablegen, was du nicht aus dem User-Objekt beziehen kannst?
SinnlosS ist offline   Mit Zitat antworten
Alt 05.04.2011, 20:57  
Benutzer
 
Registriert seit: 20.04.2009
Beiträge: 54
PHP-Kenntnisse:
Anfänger
Yanko befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von SinnlosS Beitrag anzeigen
Hm, ein Freund ist doch genau genommen ein anderer User.
Eine Freundschaft stellt letzten Endes nichts anderes dar als eine Beziehung zwischen zwei User-Objekten. D.h. der Freund wäre keine eigene Klasse, sondern ein weiteres User-Objekt.
FriendManager als Klasse ist sinnvoll um die Beziehungen herzustellen. Aber was willst du in der Klasse Friend ablegen, was du nicht aus dem User-Objekt beziehen kannst?
Wegen der Angabe von Adresse und anderen Infos könnte man auch meinen, dass es eine Art Kontaktmanager ist, wie z.B auf dem Handy
Yanko ist offline   Mit Zitat antworten
Alt 05.04.2011, 21:01  
Benutzer
 
Registriert seit: 16.07.2010
Beiträge: 80
PHP-Kenntnisse:
Fortgeschritten
SinnlosS befindet sich auf einem aufstrebenden Ast
Standard

Naja, da schon der Vergleich zu Facebook gezogen wurde, und der Begriff "Freund" nach meinem Verständnis in Bezug auf ein Social Network doch sehr eindeutig geprägt ist, ging ich davon aus, dass mit Freundschaft eben eine Beziehung zwischen zwei Nutzern des Systems gemeint ist, und kein Kontakt aus einem Adressbuch. Andernfalls wäre der Begriff "Freund" unglücklich gewählt in meinen Augen, aber dann würde selbstverständlich eine eigene Klasse Sinn machen.
SinnlosS ist offline   Mit Zitat antworten
Alt 05.04.2011, 21:49  
Neuer Benutzer
 
Registriert seit: 04.04.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
cocktailbar90 befindet sich auf einem aufstrebenden Ast
Standard

Ich hatte eigentlich schon an eine Art Mischung von euren beiden Vorschlägen gedacht: Also das 1. der "Freund" in irgendeiner Freundestabelle steht und ich 2. auch auf sämtliche Kontaktdaten zugreifen kann.
Das ist ja bei facebook grundsätzlich genauso, nur dass man einstellen kann, was öffentlich sein soll.

jetzt bin ich gerade dabei, den Code von Yanko umzusetzen, allerdings verstehe ich die Zeile

PHP-Code:
public function __construct($id == null){
... } 
nicht ganz genau. Ich weiß zwar, was der Konstruktor "tun" soll, aber eclipse meldet da auch einen Fehler.
cocktailbar90 ist offline   Mit Zitat antworten
Alt 05.04.2011, 21:52  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von cocktailbar90 Beitrag anzeigen
allerdings verstehe ich die Zeile
PHP-Code:
public function __construct($id == null){
... } 
nicht ganz genau. Ich weiß zwar, was der Konstruktor "tun" soll, aber eclipse meldet da auch einen Fehler.
Statt einem Vergleich mit == war hier wohl die Angabe eines Defaultwertes mit = gemeint.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 05.04.2011, 21:56  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Bitte ganz klar OOP und Datenbankverwaltung hier in der Diskussion und auch Deinen Überlegungen trennen! Das hat nicht das Geringste miteinander zu tun! Das Mapping übernimmt dann eine weitere Schicht, das hat aber nichts mit der Prozesslogik zu tun. Denke in der OOP "Situations-lokal" und für die DB „Anwendungs-global“.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 05.04.2011, 22:05  
Neuer Benutzer
 
Registriert seit: 04.04.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
cocktailbar90 befindet sich auf einem aufstrebenden Ast
Standard

@ChrisB: daran habe ich auch schon gedacht, aber so gesehen ist es doch dann egal, ob ich new Friend(243) oder new Friend() schreibe, weil die id sowieso jedesmal mit "null" überschrieben wird. Oder habe ich da einen Denkfehler?

@nikosch: das wäre dann wieder eine andere Frage, wie ich das mit der Datenbankanbindung mache. (bisher habe ich eine eigenen Datenbank-Klasse)
Aber bevor ihr mir alles nocheinmal erklärt, hat vlt. einer eine gute Tutorialseite mit genau diesem (SoftwareDesign) auf Lager?
cocktailbar90 ist offline   Mit Zitat antworten
Antwort


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
SOAP-Error bei einer einzigen Methode - Obwohl Response-Header 200 G.Schuster PHP-Fortgeschrittene 2 04.12.2010 11:53
array_walk(_recursive) mit geerbter Methode tr8000 PHP-Fortgeschrittene 5 03.08.2010 00:03
Inhalt / Ergebnis einer Methode in einer anderen Methode verwenden / ausführen litterauspirna PHP Tipps 2010 10 09.04.2010 14:58
Statische Methode bei Vererbter Klasse Puccini PHP-Fortgeschrittene 7 14.03.2010 20:39
Methode gibt keinen return netdirk PHP Tipps 2009 9 30.12.2009 17:01
[Erledigt] Datei in Methode includiert kein Zugriff auf $this ? serious-cool PHP Tipps 2009 18 27.12.2009 18:35
[Erledigt] Von wo wird Methode aufgerufen BlackWolf PHP Tipps 2008 2 16.11.2008 16:44
[Erledigt] OOP mit PHP 5, Methode kann nicht innerhalb der class ausgeführt werden dudi PHP Tipps 2008 6 04.07.2008 00:02
Ermitteln ob Methode geerbt wurde oder nicht? MaMo-Net PHP Tipps 2007 23 14.04.2007 00:28
Auf static Methode von variabler Klasse zugreifen Riks PHP Tipps 2007 11 16.03.2007 15:08
Methode als gz_handler? Andreas PHP-Fortgeschrittene 5 11.04.2006 14:14
[Erledigt] Rekursive Methode PHP-Fortgeschrittene 7 02.06.2005 15:09
PHP5: Klassenattribut für statische Methode, mit Vererbung PHP-Fortgeschrittene 9 24.05.2005 09:35
Methode aus einer anderen Methode aufrufen PHP Tipps 2005 3 02.03.2005 10:07
Methode kapseln PHP Tipps 2004 2 12.10.2004 10:53

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php konstruktor sql, where klausel sql, datenbank laden konstruktor sinnvoll, php function __construct

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:34 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