login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Universieel Programmeren

Offline marten - 05/09/2005 17:29
Avatar van martenBeheerder Beste bezoeker van SiteMasters

Laatst zag ik in een reactie van een admin (naam vergeten );-) een uitleg staan over Universieel Programmeren.

Zou iemand hier een tutorial over willen schrijven om het verder uit te leggen? Ik vind dat dit erg belangrijk is voor de nieuwe programmeur. Ik zit zelf nu een klein jaar bezig en heb verschillende dingen geleerd. Ik leerde niet om zo te programmeren wat wel belangrijk is dus!

Zou iemand dus een reactie willen plaatsen of zelfs een tutorial willen schrijven hierover?

Gr
Max

12 antwoorden

Gesponsorde links
Offline Stijn - 05/09/2005 19:35
Avatar van Stijn PHP expert Eerst en vooral is PHP een scripttaal , C(++/#) is dan een programmeertaal omdat je die scripts compiled . google eens ofzo 
Offline Fenrir - 05/09/2005 20:05 (laatste wijziging 05/09/2005 20:06)
Avatar van Fenrir PHP expert Wat is Universeel Programmeren?
Ik heb die term nog nooit gehoord, maar als je het een klein beetje uitlegt snap ik het misschien. Waarschijnlijk noem ik dat anders.

Is dat in PHP, of wat anders? Of is het niet taal-specifiek? Waar heb je de term gehoord (op sitemasters?).
Offline marten - 05/09/2005 20:25 (laatste wijziging 05/09/2005 20:29)
Avatar van marten Beheerder Universieel 'scripten'  is zo scripten dat je 3 delen volledig gescheiden houd. Dus de code,de uitvoer en nog iets.
Zo kan je makkelijk iets aanpassen

Ik zal de link ff opzoeken van de reactie

EDIT
Om kort te zijn:
Wie kan uitgebreid het Model-View-Controller principe uitleggen wat er op neerkomt. Het komt uit een reactie van Fenrir op een vraag wat een CMS allemaal in houd 
Offline Fenrir - 05/09/2005 20:31
Avatar van Fenrir PHP expert Ah, ok, ik noem dat dus MVC -> Model View Controller.

Dat is idd dat je verschillende delen gescheiden houdt:

Controller -> Verwerkt user-input (dus de $_GET/$_POST/..)
Model -> Haalt data uit DB/bestand
View -> Zet de data uit het Model om naar iets nuttigs (bijv. HTML).

Op www.phppatterns.com staat er een tutorial + voorbeeld over. (de site is misschien weer eens down )
Offline marten - 05/09/2005 20:35 (laatste wijziging 05/09/2005 20:35)
Avatar van marten Beheerder oke
Als die site steeds down is kunnen we dan niet beter de stof die daarop staat ook op sitemasters zetten?

Bedankt voor de site  Weer down trouwens
Offline Fenrir - 05/09/2005 20:52 (laatste wijziging 05/09/2005 20:53)
Avatar van Fenrir PHP expert Ja, de site is nog down. 

Het is niet zo 1, 2, 3 uit te leggen. Je hebt zeker een voorbeeld nodig. Misschien maak ik dat wel, maar ik maak eerst een ander project af.

Misschien kun je zelf al aan de slag. Maak een script, en post dat hier, dan zal ik zeggen of het een goed MVC script is.

Je moet deze regels volgen:

Controller
- Verwerkt alle input ($_GET, etc).
- Bij bijv. een forum slaat de controller een nieuw bericht op als iemand dat post. In de controller zelf wordt geen SQL geschreven, maar het Model doet dat:
$model->addMessage('titel', 'bericht');

Model
- Doet alle database-dingen.
- Het moet mogelijk zijn een ander database-systeem te nemen zonder dat de Controller/View veranderd hoeven te worden. Als je ipv. MySQL bijv. XML-bestanden wilt gaan gebruiken hoef je dus alleen het Model te veranderen.
- $_GET/$_POST mogen hier niet aangeroepen worden, dat gebeurt in de Controller

View
- Behandeld alle output.
- Het moet mogelijk zijn de manier van outputten te veranderen zonder dat Model/Controller veranderd hoeven te worden. Dus als je ipv. HTML nu PDF wilt weergeven, verander je alleen View.
- $_GET/$_POST mogen hier niet aangeroepen worden, dat gebeurt in de Controller

Algemeen
- Alle 3 delen (Model/View/Controller) moeten onafhankelijk van elkaar zijn. Dus veranderingen in het ene deel moeten mogelijk zijn zonder dat de andere delen aangepast hoeven te worden.
- Eerst wordt de controller gemaakt: $controller = new JeWebsiteController();
- In de constructor van de controller wordt het Modelgemaakt:
$model = new JeWebisteModel();
- Dan worden de controller taken gedaan (bijv. bericht aan DB toevoegen).
- Dan wordt View gemaakt:
$view = new JeWebsiteView();
$view->setModel($model);
$view->render();
- Voor iedere pagina is er een aparte View/Controller-class. (dus voor forum: ForumIndex/BekijkThread/BekijkCategorie/PostBericht) En voor iedere tabel in de database een Model (forum: CategorieModel, BerichtModel)

Verder werken views zo:

  1. class BaseView
  2. {
  3. var $output = '';
  4. function header()
  5. {
  6. $this->output .= '<html><head>...</head><body>';
  7. }
  8.  
  9. function footer()
  10. {
  11. $this->output .= '</body></html>';
  12. }
  13.  
  14. function render()
  15. {
  16. $this->header();
  17. $this->content();
  18. $this->footer();
  19. echo $this->output;
  20. }
  21. }
  22.  
  23. class ForumIndexView extends BaseView
  24. {
  25. function content()
  26. {
  27. while($row = $model->next())
  28. {
  29. $this->output .= 'Bericht-Titel: '.$row['title'].' bericht: '.$row['bericht'];
  30. }
  31. }


Ik hoop dat je het snapt, en anders vraag maar!
Offline marten - 05/09/2005 20:56
Avatar van marten Beheerder uhm als ik het zo bekijk is het handigst dus om classes te gebruiken?
Ik ben nog niet zo gevorderd hierin. Kan het ook met de gewone code?
Offline Fenrir - 05/09/2005 21:04
Avatar van Fenrir PHP expert Ja, het kan misschien wel, maar dat wordt dan wel heel ingewikkeld. Ik denk dat het makkelijker is om gewoon OOP/classes te leren dan het met functies/gewone code te doen.

Maar eigenlijk mag alles zolang je Model/View/Controller-code gescheiden houdt.

Dus niet:

  1. <ul> <-- View
  2. <?php
  3. $id = intval($_GET['ID'] ? $_GET['ID'] : 1); <-- Controller
  4. $res = mysql_query('SELECT * FROM reacties WHERE ID='$id); <-- Model
  5. while($dat = mysql_fetch_assoc($res)) <-- Model
  6. {
  7. ?>
  8. <li><?=$dat['title']?></li> <-- View
  9. <?
  10. }
  11. ?>
  12. <ul> <-- View
Offline marten - 05/09/2005 21:12
Avatar van marten Beheerder Maar je mag zeg maar wel zo

Bv formuliertje enzo

View met bestandsnaam index.php

<html>
enz
<form action=modelverwerk.php>
Invoer:<input name="bla2" blabla>
<input type="submit">
</form>

</html>


Vervolgens in
modelverwerk.php roep je vervolgens weer de controller aan

Je werkt dus met bestanden ipv classes
Offline Fenrir - 05/09/2005 21:54
Avatar van Fenrir PHP expert Nee, dat moet dus niet. Iedere pagina heeft een View/Controller/Model.

Want als je op die form-pagina iets uit de DB wilt weergeven dan heb je weer een model/view-mix.
Offline marten - 05/09/2005 22:06
Avatar van marten Beheerder oke
Ik zal het hele verhaal doornemen en de website raadplegen als ie weer up is
Offline Ontani - 06/09/2005 13:07
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
check this out 

http://www.webreference.com/js/tips/991203.html
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.21s