php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.01.2010, 21:45  
Erfahrener Benutzer
 
Benutzerbild von serious-cool
 
Registriert seit: 12.09.2008
Beiträge: 154
PHP-Kenntnisse:
Fortgeschritten
serious-cool befindet sich auf einem aufstrebenden Ast
Standard MVC Model Daten als Referenz oder Kopie übergeben?

Hallo,
ich arbeite mich z.Z. etwas in das MVC Pattern ein. Dabei stellt sich mir die Frage ob es sinnvoller ist die Daten als Referenz oder als Kopie an den Controller weiter zu geben.
Hier mal zwei Gerüste:
PHP-Code:
class model{
private 
$data;

public function 
__construct(){
  
$this -> data //...
  
}

public function 
getData(){
  return 
$this -> data;
  }
public function 
save($data){
  
$data //speichern
  
}

Und einmal mit Referenzen:
PHP-Code:
class model{
private 
$data;

public function 
__construct(){
  
$this -> data //...
  
}

public function &
getData(){
  return 
$this -> data;
  }
public function 
save(){
  
$this -> data //speichern
  
}

Zu welcher Variante wird in der Praxis gegriffen? Bzw welches von beiden ist zu bevorzugen?
__________________
Ein Klauenhammer ist kein Schraubendreher, auch wenn beide das Problem ,,Schraube-Wand" bidirektional lösen können.

Geändert von serious-cool (12.01.2010 um 22:07 Uhr).
serious-cool ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.01.2010, 22:10  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Bitte nicht so rumschmieren deinen Code. Und wenn du uns was zeigen willst, dann mache vernünftigen und funktionierenden Code.

Im Grunde ist ein Ansatz aber für das MVC-Pattern Unfug. Deine Klasse "model" sind bereits Daten. Darin nochmal ein weiteres Datenarray o.ä. zu speichern (was ist $this->daten denn sonst???) ist nicht Sinn und Zweck der Übung. In aller Regel hast du ein Model Objekt und hast eine "getName()" um eine Kopie (nicht eine Referenz) zu speichern und eine "setName($name)" um einen neuen Namen in das Model zu stellen. Auch hier nicht mit Referenzen arbeiten.

Damit ergibt sich automatisch, dass save keine Parameter mehr kriegt. Als Controller würdest du immer folgendes machen:
PHP-Code:
$model = new model(); // oder wie auch immer
$model->setName("Neuer Name");
$model->save(); 
Es gäbe eine weitere mögliche Schicht, die DAOs (Data Access Objects). Solche kriegen dann Parameter. Da gäbe es dann beispielsweise folgende Variante:
PHP-Code:
class UserDAO {
    public static function 
createUser($username$forname$lastname) {
        
$user = new UserModel();
        
$user->setName($username);
        
$user->setForname($forname);
        
$user->setLastname($lastname);
        
$user->insert(); // macht den DB-Insert und speichert die von auto-increment generierte ID
        
return $user->getUserID();
    }

Das sieht im ersten Moment überflüssig aus. Aber irgendwann ist ein DAO hübsch und handlich, wenn man komplexere Abläufe sinnvoll kapseln will.

Die DAOs können auch in der Architektur anders genannt werden mit leicht anderer Zielsetzung. Mancher spricht von Business-Logik und entsprechend von Businness-Services. Andere sprechen von Datenbank-Backend-Logik. Wie auch immer.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen 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
Daten aus Form Feldern dynamisch übergeben ePole PHP Tipps 2009 2 06.11.2009 14:58
Daten in Datenbank übergeben Bebre PHP Tipps 2008 2 11.02.2008 11:41
Daten an ein PHP-Skript übergeben PHP-Fortgeschrittene 2 04.03.2005 10:13
Daten von DropDown-Menu an php übergeben... alisa PHP Tipps 2005 14 02.03.2005 20:50
Daten übergeben kampfnickel PHP Tipps 2005 4 05.01.2005 14:12
[Erledigt] Daten gleichzeitig mit Get und post übergeben PHP Tipps 2004-2 2 13.11.2004 21:30
PHP daten an Java übergeben PHP Tipps 2004 5 22.09.2004 22:52
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
Daten übergeben und auslesen PHP Tipps 2004 2 22.07.2004 19:16
Daten von PHP an HTML-Maske übergeben & anzeigen PHP Tipps 2004 5 22.07.2004 14:33
Formular Daten an Funktion in selber Datei übergeben PHP Tipps 2004 5 21.07.2004 13:42
[Erledigt] Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51
Daten mit POST übergeben? PHP Tipps 2004 8 01.07.2004 10:05
Formular daten an ein script übergeben?? b++ PHP Tipps 2004 3 20.06.2004 19:19
daten werden nicht übergeben PHP Tipps 2004 1 04.06.2004 12:03

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
modeldaten, mvc model übergeben, mvc model standard functions php, php mvc model, mvc model php, php kopie übergeben, mvc usermodel, http://www.php.de/php-einsteiger/63309-mvc-model-daten-als-referenz-oder-kopie-uebergeben.html, us modelangaben für ein model, model referenzen, java mvc referenz, mvc modell, php referenz ubergeben und neu speichern, daten an model übergeben mvc, php mvc post parameters, mvc model daten für datenbank übergeben, mvc user model, php referenz speichern, mvc php model return, php daten funktion übertragen

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