Versio

[OOP] Forum

Overzicht Reageren

Thijs X

Thijs X

24/04/2008 19:27:00
Quote Anchor link
Hallo allemaal,

Ik ben momenteel bezig om object georienteerd een forum te maken,
echter ben ik ergens tegen aangelopen en wou weten hoe jullie dat zouden oplossen.

Situatie ( Simpel ):

Class Bericht
- Gebruiker Object
+ printBericht() // Deze print het hele bericht, poster etc..

Class Topic
+ printTopic() // Deze print ook alle berichten die in het topic zijn geplaatst


Een gebruiker moet natuurlijk zijn/haar eigen bericht kunnen wijzigen, hoe kan ik dit het beste toepassen? ( En zo zijn er nog een tal soortgelijke situaties te bedenken )

Een nieuwe methode maken die eigenlijk bijna hetzelfde is als printBericht() alleen dan nog met een extra 'knopje' om het bericht te wijzigen.
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 
PHP hulp

PHP hulp

25/05/2012 12:52:18
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
M Ypma

M Ypma

24/04/2008 20:35:00
Quote Anchor link
ik denk dat je al een fout maakt door je objeo kan je in je template de situatie bekijken en een edit knopje wel of niet weergeven terwijl je hetzelfde object in je template hebt gegooid.
 
Thijs X

Thijs X

24/04/2008 21:15:00
Quote Anchor link
Hmm ik gebruik pas sinds kort een template parser dus hier heb ik nog niet zoveel ervaring mee.

Momenteel doe ik hetvolgende in de klasse bericht:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
    public function printBericht(Template_Lite $oTPL) {
        $oTPL->assign('iBerichtID', $this->iBerichtID);
        $oTPL->assign('sGebruikersNaam', $this->oGebruiker->getNaam());
        $oTPL->assign('sDatum', $this->sDatum);
        $oTPL->assign('sBericht', $this->sBericht);
        $oTPL->display('bericht.tpl');
    }


Zou je anders een klein voorbeeld kunnen geven?
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 
Jelmer rrrr

Jelmer rrrr

24/04/2008 21:38:00
Quote Anchor link
Als je dan toch al werkt met models & views, kan je ook de controllers wel gebruiken.

Al die assign aanroepen komen dan niet in je model, je Post of Topic, maar in de controller-klasse. Je models bevatten alleen de data en eventuele checks of data wel veranderd kan worden in de nieuwe data. Bijvoorbeeld of het een geldig topictitel is wat je aan $topic->title toewijst. Stop geen presentatie, views, in je models. Op die manier kan je Topic minder goed gebruiken voor bijvoorbeeld een RSS feed.

Stel je maakt 2 controllers. Een voor het weergeven van topics in HTML, en eentje voor een RSS feed. Als iemand een HTML pagina wil, hoef jij al die RSS code niet te laden, want die zit in een andere controller. Zou die in je model zitten, dan krijg je een enorme model met allemaal functies die heel specifiek zijn. Voor specifiek gedrag gebruik je nu de controller.
 
Thijs X

Thijs X

24/04/2008 21:55:00
Quote Anchor link
Bedankt voor je reactie Jelmer, hier even een voorbeeldje hoe ik denk dat je het bedoeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if( isset($_GET['topicID']) && ctype_digit($_GET['topicID']) ) {
    $oTopic = Forum::getTopic($_GET['topicID']);
    $aBerichten = $oTopic->getBerichten();
    
    foreach($aBerichten as $oBericht) {
        $oTPL->assign('iBerichtID', $oBericht->iBerichtID);
        $oTPL->assign('sGebruikersNaam', $oBericht->oGebruiker->getNaam());
        $oTPL->assign('sDatum', $oBericht->sDatum);
        $oTPL->assign('sBericht', $oBericht->sBericht);
        $oTPL->display('bericht.tpl');
    }
}

?>


Echter weet ik dan nog steeds niet helemala hoe ik nou mn probleemstelling kan toepassen hierin, en hoe ik dat het beste kan doen in mn template.
 
Jelmer rrrr

Jelmer rrrr

24/04/2008 21:59:00
Quote Anchor link
Ik denk dat je je template parser moet uitbreiden met de mogelijkheid om simpele if-else constructies te maken. Die zal je hoe dan ook nodig hebben. In je controller kijk je dan of de voorwaarde - of de post door de gebruiker bewerkt mag worden - waar is, je assignt het resultaat - true of false - aan een variabele en aan de hand daarvan laat je in je template wel of geen linkje zien.
 
Thijs X

Thijs X

24/04/2008 22:02:00
Quote Anchor link
Hardstikke bedankt Jelmer, hier kan ik wel verder mee!
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 



Overzicht Reageren