MVC nieuwsbericht en user
Hallo, ik ben voor een hobby projectje begonnen aan een nieuwssyteempje en wil dit met MVC gaan maken. (of toch proberen iets dat er op lijkt hehe)
Nu ben ik bezig met het maken van het model 'nieuwsbericht', met deze vars:
$ID,$title,$content,$lang,$pubDate
Ik wil nog ook erbij welke persoon die post heeft aangemaakt, dus dacht ik ik zet deze erbij:
$userID,$userName
Maar is dit wel correct?
Neem ik niet beter een var $user die een instantie is van het model 'user' om dan $user->id en $user->name te kunnen doen?
Nu ben ik bezig met het maken van het model 'nieuwsbericht', met deze vars:
$ID,$title,$content,$lang,$pubDate
Ik wil nog ook erbij welke persoon die post heeft aangemaakt, dus dacht ik ik zet deze erbij:
$userID,$userName
Maar is dit wel correct?
Neem ik niet beter een var $user die een instantie is van het model 'user' om dan $user->id en $user->name te kunnen doen?
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
Gesponsorde koppelingen:
Ligt er een beetje aan, als je veel van User nodig hebt binnen 'Nieuwsbericht' zou ik een User bij houden, anders kan je er voor kiezen alleen een user_id bij te houden.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// In nieuwsbericht
public function setUser(User $user) {
if(User::findById($user->getID() == NULL) throw new InvalidArgumentException("Geen geldige gebruiker");
$this->user_id = $user->getID();
}
public function getUser() {
return User::findById($this->user_id);
}
//Waar je het artikel weergeeft kan je dan iets doen als
echo "Gemaakt door: " . $nieuwsbericht->getUser()->getNaam();
?>
// In nieuwsbericht
public function setUser(User $user) {
if(User::findById($user->getID() == NULL) throw new InvalidArgumentException("Geen geldige gebruiker");
$this->user_id = $user->getID();
}
public function getUser() {
return User::findById($this->user_id);
}
//Waar je het artikel weergeeft kan je dan iets doen als
echo "Gemaakt door: " . $nieuwsbericht->getUser()->getNaam();
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan geen
bedoeling zou zijn om zijn naam te tonen en met een link dmv zijn userid
zoals je meestal ziet bij nieuws systemen
zoals je meestal ziet bij nieuws systemen
Je kan het ook combineren: Je laat het fetchen over aan een aparte klasse, en die makt de nieuwsbericht-instanties aan, en koppelt daar de user-instanties - op basis van de in de query opgehaalde data - aan vast.
Zie ook dit topic op PHPfreakz
Zie ook dit topic op PHPfreakz
Dat artikel is ongeveer precies hetzelfde probleem als het mijne :-)
Bedankt Jelmer.
Dus stel voor om het op de 2de methode te doen? Dus data meteen joinen in de query en een $userID en $userName hebben in het model?
Bedankt Jelmer.
Dus stel voor om het op de 2de methode te doen? Dus data meteen joinen in de query en een $userID en $userName hebben in het model?
Ja, zeker meteen joinen. Het is niet alleen complex qua programmeren maar ik denk dat de snelheid uiteindlijk ook achteruit gaat. Voor dit soort kleine stukjes data kan je prima delen 'opnieuw' zoeken in de database.
Mooi voorbeeld dat idealiter zo'n MVC model bedacht wordt, maar dat in combinatie met een genormaliseerde database er niet altijd 1 lijn te trekken is. Daarom is het goed MVC wel in je achterhoofd te houden, maar niet koste wat het kost aan dit te blijven vasthouden.
Ben wel benieuwd naar je hobbie projectje ;) Wat is je uiteindelijke doel? Vooral dingen leren of iets voor de publicatie?
Mooi voorbeeld dat idealiter zo'n MVC model bedacht wordt, maar dat in combinatie met een genormaliseerde database er niet altijd 1 lijn te trekken is. Daarom is het goed MVC wel in je achterhoofd te houden, maar niet koste wat het kost aan dit te blijven vasthouden.
Ben wel benieuwd naar je hobbie projectje ;) Wat is je uiteindelijke doel? Vooral dingen leren of iets voor de publicatie?
Ik ben begonnen aan een multi-talen nieuwssysteem voor een homepage van een game dat ik aan het maken ben.
Dus ja, ooit zou het allemaal moeten werken en online staan :p
Of bedoel je met publicatie de code publiceren? Ja ms komen er wel onderdelen van code naar buiten..
En doel is ook vooral wat bijleren van het oop gebruik in php en mvc (oop in JAVA kan ik al gedeeltelijk), waarvoor zijn hobby projectjes anders ;-)
Ik heb nu zo in gedachten dat ik er van uit ga dat de gebruikersnaam via een join meegekregen wordt en in het geval moest dat niet gebeurd zijn, dan vraagt ie als nog via een of andere manier die gebruikersnaam op.
Dus ja, ooit zou het allemaal moeten werken en online staan :p
Of bedoel je met publicatie de code publiceren? Ja ms komen er wel onderdelen van code naar buiten..
En doel is ook vooral wat bijleren van het oop gebruik in php en mvc (oop in JAVA kan ik al gedeeltelijk), waarvoor zijn hobby projectjes anders ;-)
Ik heb nu zo in gedachten dat ik er van uit ga dat de gebruikersnaam via een join meegekregen wordt en in het geval moest dat niet gebeurd zijn, dan vraagt ie als nog via een of andere manier die gebruikersnaam op.



