[MVC/PHP5]Het gebruik van MVC

Pagina: 1
Acties:
  • 331 views sinds 30-01-2008
  • Reageer

  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 29-01 20:14

megamuch

Tring Tring!

Topicstarter
Inleiding:

Ik ben na 3 jaar procedureel programmeren er nu helemaal klaar mee. Ik moet en zal OOP, patterns, overloading, inheritance, public, private and static etc methods leren en toepassen.

Ik heb ondertussen een aantal websites in elkaar gedraait, maar elke keer verlies ik door onkunde het overzicht. En daar heb ik nu genoeg van.

Wat wil ik:?

Lekker mee hypen :P Ik wil ook met AJAX aan de slag, ik wil ook MVC patterns toepassen, en ik wil ook een snufje enterprise aan m'n apps toepassen... Serieus, ik wil goed onderhoudbare websites bouwen, die gebruik maken van de 'best practices in webdevelopment'. Bij gebrek aan een betere bewoording

wat heb ik gedaan :?
Phppatterns.org / com bezocht
Sitepoint articles gelezen
Java docs gelezen
MVC articles bekeken
CakePHP framework bekeken en de tutorials gemaakt
Zend Framework installed
Wrox Professional PHP 5 gekocht en gelezen
Gekeken naar Prototype icm scriptaculous voor AJAX
1000 weblogs met artikelen bekeken

Wat wil je van ons dan :?

Hulp bij de eerste stapjes :) Het probleem wat ik ondervind bij de meeste tutorials is het volgende:

Men bouwt een blog en men kan de basic CRUD activiteiten uitvoeren en dan houdt het meestal wel op. En daar heb ik niet genoeg aan. Ik krijg het maar niet in m'n hoofd om het voorbeeld toe te passen op ideeen die ik zelf heb.

Geef is een voorbeeld

De website www.yes2mms.nl is 1 van de eerste websites die ik heb gemaakt in PHP. Als ik nu naar de code kijk is het echt om te huilen. :'(

Het doel van de website is om iedereen een gratis fotoalbum te geven. Uploaden gebeurt door een email met attachments te sturen naar een bepaald adres.

Foto's kunnen worden gemarkeerd als public of private. Ook kan men simpele handelingen uitvoeren op de foto's zoals roteren.

Mijn doel is om deze website opnieuw te maken / schrijven op een goede en gestructureerde manier.

Back to MVC

Het eerste waar ik tegen aanloop is het volgende:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action 
{
    public function indexAction()
    {
        echo 'Hello from IndexController';
    }

    public function noRouteAction()
    {
        $this->_redirect('/');
    }
}

?>


In bovenstaand voorbeeld zie je de indexAction(). Hier gaan we dingen aanroepen die gedaan moeten worden zodra index.php wordt aangeroepen.

Wat ik nu van jullie wil weten is:

Ga ik indexAction() helemaal volgooien met:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    public function indexAction()
    {
        include "header.tpl";
        setTitle();  // titel
        include "meta.tpl";
        setMetaTags(); // metatags
        include "loginBox.tpl"        
        checkLogin(); // zetten we de status van login box op logged in of niet en zetten additionele parameters
        include "reactBox.tpl";
        showLatestReactions();
        include "latestPics.tpl";
        showLatestTenPics();
        include "mainContentBox.tpl";
        setContentBox("lange string hier / text uit DB / kan van alles zijn");
    }


Bovenstaande lijkt me niet de bedoeling. Maar hoe het wel moet, ik kom er niet uit. :? :(

Waar ga ik die tpl files includen en 'voeden'?
Dan zit je nog met ACL en DB Sessions en waar ga je dat dan weer allemaal regelen.
En je database settings, waar zet je die en hoe worden die door alle files gevonden en gebruikt.

Wie duwt mij in de goeie richting?

Verstand van Voip? Ik heb een leuke baan voor je!


  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Misschien niet hetgeen je wil horen, maar ook zou eerlijkgezegd niet direct het Zend Framework gebruiken om jezelf OO principes te gaan aanleren :) . Ik vind het persoonlijk een enigzins onoverzichtelijk geheel, maar het is vooral niet af. Persoonlijk zou ik eerder Ruby on Rails gebruiken als voorbeeld, en dan vooral met behulp van het Agile Development with Ruby on Rails boek. Dat legt in veel grotere mate uit hoe dingen werken, en in enige mate waarom het zo werkt. Het is wel veel leeswerk, maar zeker als je het non-tutorial deel hebt gelezen en begrepen ben je denk ik een stuk verder :) .

DM!


  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 29-01 20:14

megamuch

Tring Tring!

Topicstarter
JHS schreef op dinsdag 11 april 2006 @ 15:19:
Misschien niet hetgeen je wil horen, maar ook zou eerlijkgezegd niet direct het Zend Framework gebruiken om jezelf OO principes te gaan aanleren :) . Ik vind het persoonlijk een enigzins onoverzichtelijk geheel, maar het is vooral niet af. Persoonlijk zou ik eerder Ruby on Rails gebruiken als voorbeeld, en dan vooral met behulp van het Agile Development with Ruby on Rails boek. Dat legt in veel grotere mate uit hoe dingen werken, en in enige mate waarom het zo werkt. Het is wel veel leeswerk, maar zeker als je het non-tutorial deel hebt gelezen en begrepen ben je denk ik een stuk verder :) .
Ik wist dat die opmerking ging komen ;) RoR is leuk, maar dan moet ik Ruby leren, terwijl ik me eigenlijk heel erg happy met PHP voel. En imho kan PHP natuurlij kwat Ruby ook kan. Er is alleen nog geen compleet framework voor, zoals rails dat wel is. Zend is daar nu mee begonnen, en ookal is het niet af, verwacht ik zelf dat het Zend framework HET framework gaat worden voor PHP. (Waar Pear dat niet lukt).

Verstand van Voip? Ik heb een leuke baan voor je!


  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Het begrijpen van de syntax kost je echt máximaal een paar uur :) . Daarnaast zeg ik niet dat je het in Ruby moet gaan uitvoeren, alleen dat RoR en het erbij horende boek een betere methode is om het te léren :) . Na een paar projecten in RoR te hebben geklooid dénk ik iniedergeval dat ik het een stuk beter begrijp, waarna je als je dat wil vrolijk verder kan in PHP.

Aan de andere kant valt het natuurlijk uiteindelijk net zo goed te leren in PHP, alhoewel het misschien wat meer tijd komt. Om dan toch maar wat proberen in te gaan op je vragen:

Nee, het lijkt me niet handig als je je indexAction daar helemaal vol mee te gooien :P . Eerder zou zoiets in een actie moeten die altíjd wordt aangeroepen :) . Of anders in een layout template, die altijd wordt aangeroepen, die weer de verschillende acties aanroept, maar dat is eigenlijk denk ik niet de meest juiste manier.

Ook is het denk ik handiger om een functie te maken die een default bepaalt voor de te includen template, zodat je dat zelf niet de hele tijd zelf hoeft te gaan doen bij elke functie. Maar het bepalen van wélke template hoort denk ik bij de actie zélf thuis, en niet bij een potentiële andere aanroepende actie.

Een sessie lijkt me een object, alhoewel ik niet zeker weet of dat is wat je bedoelt. Je kan dus volgens mij ook rustig gewoon een sessie object, eventueel aanroepen uit een register, gebruiken :) .

De settings zou ik een een config mapje zetten, gewoon in PHP taal, en door de relevante class laten includen. Zo kan je bijvoorbeeld een /config/database.php bestand hebben dat wordt geïnclude door je database object. In deze is het overigens interessant om naar het ActiveRecord pattern te kijken.

DM!


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 22-02 20:26
Als je met dit soort vraagstukken zit vraag ik mij af wat jou kennis van OO (los van php) is?

Ga je zelf eerst verdiepen in object georienteerd programmeren en denken. Het is geweldig dat je patterns, mvc, framework wilt gaan beheersen, maar zorg eerst eens voor een degelijke basis kwa oo.

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Hehe, misschien is MVC middels Zend Framework een betere topic title dan zoiets algemeens als MVC ;) Daar heb je het Zend raamwerk echt niet voor nodig ;)
Zoals al eerder gezegd is het aan te raden om eerst heil te zoeken bij object orientatie, dus de manier van denken en redeneren. Dit is een top down benadering tov de bottom up benadering die je nu hier voorlegt, en de ervaring leert dat de voorkeur uitgaat naar eerstgenoemde, aangezien je hetgeen je leert ook toe kan passen bij andere talen.
Design Patterns waaronder MVC, vereist wel dat degene de basis van OO beheerst. Het lijkt me dat je ook wil weten WAT en WAAROM je iets doet toch ipv alleen hoe? ;)

  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Eens met prototype. Het is volgens mij zelfs erger. De boeken over design patterns zijn meestal vrij abstract en vereisen een redelijk solide begrip van OO. En dan niet over het schrijven van een klasse syntactisch gezien, maar het denken als een klasse/verzameling klassen. Dan geeft bijvoorbeeld een design patterns boek wat zaken om over na te denken om meer uit je klassen te halen. Zonder goede OO kennis zullen die patterns er waarschijnlijk zelfs onzinnig uitzien.

Zomaar met design patterns beginnen is onzin, daar heb je niks aan. Ik zou beginnen met het lezen van een PHP boek, aangezien je dat als taal wilt gebruiken.
Dat heb je al gedaan, dus nu stap twee, het inlezen in OO. Daar weet ik niet zo snel een boek voor, heb het meer in de praktijk geleerd.
Dan pas, als je eenmaal wat met OO gedaan hebt, gaan kijken naar design patterns. Voor design patterns zou ik beginnen met het boek van de beruchte Gang of Four (Design Patterns - Elements of Reusable Object-Oriented Software).
Daarna kun je gaan kijken naar specifiekere patterns. Voor J2EE heb je bijvoorbeeld een klassieker van Rod Johnson. Voor PHP ken ik geen specifieke design patterns boeken. Volgens mij wordt er in de PHP wereld minder expliciet met design patterns gewerkt zoals dat bij Java is. No flame, let op het woordje "expliciet". :)

Als iemand nog een goed OO of PHP patterns boek weet, graag aanvullen.

Fat Pizza's pizza, they are big and they are cheezy


  • aex351
  • Registratie: Juni 2005
  • Nu online

aex351

I am the one

MVC hoeft niet percee 100% gemaakt te zijn in OO style.

< dit stukje webruimte is te huur >


  • Bigs
  • Registratie: Mei 2000
  • Niet online
Het eerste wat ik dacht is hetzelfde als wat JHS al zei: Ruby on Rails

Je hoeft niet eens Ruby te installeren, lees gewoon het Agile development boek eens door (PDF is wel te vinden hier en daar :) ) om eens te zien hoe ze het daar hebben aangepakt. Ik denk dat je dan vanzelf een idee krijgt hoe je het in je PHP applicatie aan kan pakken (als je niet besluit om ineens Ruby on Rails te gaan leren, wat wel een hele grote kans is ;) ). RoR is namelijk een schoolvoorbeeld van hoe je MVC goed aan kunt pakken.

Ik heb nu m'n eerste grote (>30 models) Rails project af en ik weet wel dat áls ik nog een keer een groot PHP project maak, ik dat totaal anders aan ga pakken :)

Verwijderd

Dat heb je al gedaan, dus nu stap twee, het inlezen in OO. Daar weet ik niet zo snel een boek voor, heb het meer in de praktijk geleerd.
Ik vond An Introduction to Programming and Object-Oriented Design Using Java 2nd Edition - Java 5.0 version een goed boek om je object-oriented programming aan te leren.

In het boek gebruiken ze Java als voorbeeldtaal, maar het draait om het begrijpen van object-georienteerde concepten zoals objecten, instantievariabelen, methoden, overerving, interfaces en al dat soort termen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:08
PRG->SE&A

laten we dit topic wel geen boeken-topic worden, wat dat hebben we al. ;)

https://fgheysels.github.io/


  • ReverendBizarre
  • Registratie: December 2001
  • Laatst online: 24-03-2021
JKVA schreef op dinsdag 11 april 2006 @ 22:06:
Als iemand nog een goed OO of PHP patterns boek weet, graag aanvullen.
PHP 5 Objects, Patterns, and Practice

Begint ook met een algeme introductie over OO en hoe dat in PHP 5 toe te passen is. Ik zou het boek zeker aanraden als je van plan bent om OO te gaan programmeren in PHP en je hebt nog geen goede OO basiskennis (alhoewel er voor algemene OO basiskennis waarschijnlijk wel betere boeken zijn). Het gedeelte over design patterns handelt een aantal welbekende design patterns af en geeft daarbij voorbeeld PHP implementaties. Vooral het stuk over Enterprise Patterns (beetje J2EE achtige patterns maar dan in PHP geimplementeerd) vond ik best interessant.

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Verwijderd schreef op woensdag 12 april 2006 @ 07:46:
[...]


Ik vond An Introduction to Programming and Object-Oriented Design Using Java 2nd Edition - Java 5.0 version een goed boek om je object-oriented programming aan te leren.

In het boek gebruiken ze Java als voorbeeldtaal, maar het draait om het begrijpen van object-georienteerde concepten zoals objecten, instantievariabelen, methoden, overerving, interfaces en al dat soort termen.
Ik kan dit boek ook van harte aanraden, aangezien bij mij op school met dit boek wordt lesgegeven en de auteurs niet beroerd zijn om je ook te helpen :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:08
Nogmaals: kunnen we het boeken gedoe in het [rml][ Alg] Centraal boekentopic - part II[/rml] topic laten

https://fgheysels.github.io/

Pagina: 1