Just nu i M3-nätverket
Gå till innehåll

Inlägg i databas (MVC)


Re-JeeP

Rekommendera Poster

Hej!

 

Hur skulle ni rekommendera att man uppdaterar databasen? Jag programmerar OOP i PHP5 och följer MVC design modell.

 

Att först ge Model information och sen bara anropa en funktion.

$Model->setSubject($subject);
$Model->setText($text);
$Model->setPost();

 

Eller att ge Model all information på en gång.

$Model->setPost($subject, $text);

 

Länk till kommentar
Dela på andra webbplatser

Pja, varför inte båda?

 

Men om metoderna skriver i en databas kanske det finns transaktioner inblandat. Om så kanske det spelar viss roll, t ex om man hinner göra en setSubject(...) innan programmet krashar, vad finns då sparat i databasen? Eller kanske inget skrivs förrän man gör setPost(...)?

 

Länk till kommentar
Dela på andra webbplatser

Tja, i det här fallet är naturligtvis det andra exemplet att föredra. Den första tillför inget och du får två extra funktionsanrop.

 

Men självklart ser saker annorlunda ut i verkligheten. Det finns inget som hindrar dig från att ha båda varianterna. Mao: Om man skickar med parametrar till setPost() så används de angivna värdena. Annars försöker setPost() använda existerande värden på $subject och $text i $Model.

 

Länk till kommentar
Dela på andra webbplatser

Okej...

 

Jag har ett annat exempel där jag inte kan bestämma mig för hur jag ska lösa det.

 

<?php

class DatabaseController
{
private $dbView;
private $dbModel;

public function __construct()
{
	$this->dbModel = DatabaseModel::getInstance();
	$this->dbModel->query("SELECT * FROM tabell");

	new DatabaseView($this->dbModel);
}
}

?>

 

<?php

class DatabaseController
{
public function __construct()
{
	$dbModel = DatabaseModel::getInstance();
	$dbModel->query("SELECT * FROM tabell");

	new DatabaseView($dbModel);
}
}

?>

 

I första exemplet sparas Model och View som instanser men inte i det andra. Det är ju egentligen onödigt att spara dom som instanser men det känns ändå inte rätt att göra så?

 

Tankar?

 

Länk till kommentar
Dela på andra webbplatser

Edit *

Lyckas inte editera mitt inlägg...

 

I första exemplet ska det vara

$this->dbView = new DatabaseView($this->dbModel);

istället för

new DatabaseView($this->dbModel);

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...