[OOP] MVC-pattern

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# .NET Developer

Dit ga je doen Als developer nieuwe gave features implementeren; Werken met technieken als C# .NET en (REST) API's webservices; Ontwikkelen van koppelingen middels API's; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken In een klein team van professionals ben je als C# .NET Developer verantwoordelijk voor het ontwikkelen van één van de applicaties voor het grootste inhouse product: een applicatie voor alles omtrent hypotheken. De programmeertaal die je

Bekijk vacature »

SQL ontwikkelaar

Functieomschrijving Voor een gave werkgever in regio Breda zijn wij per direct op zoek naar een SQL ontwikkelaar/ functioneel consultant. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Je test de ontwikkelde oplossingen om er zeker van te zijn dat deze voldoen aan de functionele specificaties en de behoeften van de organisatie; Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Je stelt op

Bekijk vacature »

Junior Front end developer

Functie Als Front end developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

Hands-on Solution Architect / Software Architect (

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Solution Architect / Software Architect op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je werkt samen met gedreven DevOps teams, bestaande uit frontend, backend en middleware developers, testers, UX-designers. Samen met de teams ben je continu op zoek naar de beste oplossingen voor onze klanten. Als Solution Architect onderzoek

Bekijk vacature »

C# Developer

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Door middel van ASP.NET, MVC Framework en C# ga je webshops, websites en webapplicaties ontwikkelen. Je zorgt voor de optimalisatie van bestaande software en de automatisering van bedrijfsprocessen. Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Bedrijfsprofiel

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! Voor een opdrachtgever in omgeving Moordrecht zijn wij op zoek naar een programmeur. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op

Bekijk vacature »

Software Developer

Longship.io gaat de wereld veroveren met baanbrekende software en legendarische... pizza-avonden! Lees hier de vacature van Software Developer! Bij Longship werken we met een team van 5 mensen aan software voor laadpaal operators. Longship is ontstaan in 2020 met als doel om de elektrische mobiliteitstransitie aan te jagen. We zijn nu al een wereldwijde speler doordat we continu voorop lopen in innovatie. Ons platform helpt het versneld elektrificeren van wagenparken, internationaal! Wij zijn een startup met grote ambities die we willen bereiken met een relatief klein en efficiënt team. Je krijg de kans om ontzettend veel te leren van ervaren

Bekijk vacature »

Senior Developer Betty Blocks Blauwe Haven Rotterd

Functieomschrijving Voor de Politie zijn wij opzoek naar een Senior Developer Betty Blocks Blauwe Haven Rotterdam. De politieorganisatie heeft jaarlijks te maken met een aanzienlijk aantal politiemedewerkers die vanwege mentale overbelasting niet of beperkt inzetbaar zijn. De Blauwe Haven Rotterdam ondersteunt deze politiemedewerkers in hun herstel en re-integratieproces. De huidige digitale systemen van de Politie bieden onvoldoende ondersteuning in het herstel- en re-integratieproces van politiemedewerkers. Zowel voor de politiemedewerkers als voor de organisatie. Politiemedewerkers worden buitengesloten, waardoor zij eigen regie verliezen. Begeleiders kunnen de voortgang van de medewerkers niet goed monitoren. Management beschikt niet over de mogelijkheid trends te signaleren

Bekijk vacature »

Back end developer Digital Agency

Functie Wij zijn van origine een wordpress bureau, maar sinds 2006 zijn wij dit wel redelijk ontgroeid. Naar mate de jaren verstreken zijn we gegroeid in omvang, maar ook in de complexiteit van opdrachten waarin wij onze klanten kunnen bedienen. Momenteel bestaat onze organisatie uit 4 front end developers, 12 back end developer 3 projectmanagers en een 2 koppig management. Wij zijn een hele informele, bijna familiaire organisatie. Geen strak pak of overhemd, nee gewoon dragen waar jij je prettig bij voelt. De gemiddelde leeftijd ligt tussen de 25 en 30 en wij doen er veel aan om onze hechte

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. Je gaat als Full stack developer aan de slag en gaat

Bekijk vacature »

Back-End Developer in Laravel / PHP

Functie omschrijving Wij zijn op zoek naar een Medior PHP Laravel Developer voor een gaaf bedrijf in de omgeving van Amsterdam! Voor een enthousiast team die zich graag bezig houdt met softwareontwikkeling zijn wij op zoek naar versterking. Je werkt in een klein ontwikkelteam en bent zeer betrokken bij alle aspecten van de softwareoplossingen. Van het ontwerpen tot de oplevering. Binnen deze functie ga je aan de slag met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je krijgt veel te maken met koppelingen naar systemen en de verzoeken van de klant. Je komt terecht in een team, waarbij

Bekijk vacature »

C# ontwikkelaar

Functie omschrijving Werk jij graag met C# en het .NET framework in een leuk familiebedrijf? Lees dan snel verder! Jouw takenpakket hierbij is: Je gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Je gaat werken in een Microsoft omgeving (ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Daarnaast optimaliseer je de bestaande software. Bedrijfsprofiel Deze organisatie is gevestigd in de omgeving van Best en is een echt familiebedrijf. Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met

Bekijk vacature »

C# .Net Developer

Dit ga je doen Het bouwen van Api's; Nieuwe oplossingen bouwen met C# .Net; De huidige software uitbouwen met C# .Net; Meewerken in projecten; Meedenken aan de toekomstplannen en verbeteringen; Onderdeel van het Scrum Team. Hier ga je werken Onze klant is een dienstverlenende organisatie voor diverse soorten organisaties in Nederland. Ze zijn van oorsprong een familiebedrijf en er is een open cultuur. Ze zijn vooruitstrevend op IT gebied en hebben een eigen inhouse development team van circa 11 man. Je komt hier te werken in het subteam .Net Core. Hier werken ze volgens scrum met de nieuwste technieken en

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »

Frontend Developer

Dit ga je doen Door ontwikkelen van het online platform Deel uitmaken van verschillende ontwikkelteams Meedenken over UI/UX vraagstukken Uitdragen van Front-end binnen de organisatie Hier ga je werken Deze organisatie, gevestigd in de omgeving van Amsterdam, is een grote onderwijs instelling met meerdere vestigingen en een groot aantal studenten. Zo telt deze organisatie +/- 35.000 gebruikers. Bij deze organisatie staat jouw ontwikkeling centraal en is er veel ruimte voor eigen initiatieven. In samenwerking met jouw team ga jij de online omgeving verder ontwikkelen. In de rol van Front end Developer zal jij 50% van jouw tijd werken in het

Bekijk vacature »
Tim

Tim

07/02/2009 16:50:00
Quote Anchor link
Heey allemaal,


Op dit moment ben ik me een beetje aan het verdiepen in het MVC pattern en zodoende heb ik een 'overzichtje' gemaakt van de verschillende 'lagen'. Dit heb ik in een diagram gezet en ik vroeg me af of het zo goed was. Daarom wil ik graag jullie commentaar hebben op het volgende diagram:

http://www.agenebbes.nl/MVC-pattern.png

Opmerkingen en (opbouwende) kritiek zijn altijd welkom!


Groetjes!
Gewijzigd op 01/01/1970 01:00:00 door Tim
 
PHP hulp

PHP hulp

26/05/2026 12:22:48
 

07/02/2009 16:51:00
Quote Anchor link
'Tim:
Heey allemaal,


Op dit moment ben ik me een beetje aan het verdiepen in het MVC pattern en zodoende heb ik een 'overzichtje' gemaakt van de verschillende 'lagen'. Dit heb ik in een diagram gezet en ik vroeg me af of het zo goed was. Daarom wil ik graag jullie commentaar hebben op het volgende diagram:

www.agenebbes.nl/MVC-pattern.doc

Opmerkingen en (opbouwende) kritiek zijn altijd welkom!


Groetjes!

Moet het per se in doc? Ik heb al zeven andere documenten open staan, daar raak ik al af en toe de weg in kwijt. Kan je het niet in een ander formaat doen? Of gewoon een webpagina? (Desnoods exporteer je het...)
 
Tim

Tim

07/02/2009 17:11:00
 
Jelmer -

Jelmer -

07/02/2009 17:20:00
Quote Anchor link
Volgens mij heb je daar inderdaad een mooie uitwerking van het MVC model.

Alleen de controller moet volgens mij nog ietsjes dikker. Het model doet slechts de business logic, niet alle logica. Topics ophalen, beslissen of een bepaalde post een geldige post is en eventueel of een bepaalde gebruiker het recht heeft een bepaalde post op te slaan zou ik onder het model laten vallen. Maar het inloggen, welke methods van het model aangeroepen moeten worden wanneer er een formuliertje is gepost, en welke views moeten worden gebruikt zou ik in de controller onderbrengen. Dat is meer specifiek voor de applicatie, en kan je waarschijnlijk niet hergebruiken in een andere applicatie.

Het model daarentegen zou zo algemeen moeten zijn dat iedere applicatie die die bepaalde data aanspreekt er gebruik van zou moeten kunnen maken. Of die applicatie nu een daemon, of een cli programmaatje, of een GTK programmaatje, een webservice of een website is. Als al die verschillende interfaces (applicaties is een beetje ambigu hier. Applicatie in de zin van programma, of in de zin van groep programma's en services die samen een bepaalde dataset beheren) gebruik kunnen maken van dezelfde implementantie van het model, dezelfde implementatie van je business logic... volgens mij is dat ideaal. Minder kans op fouten, minder dubbele code, business logic maar op 1 plek hoeven aanpassen en maar één implementatie ervan te hoeven testen.

Zo gezien heb je eigenlijk meer een scheiding tussen Model en Controller+View dan tussen de drie apart. Controller + View zorgt voor de weergave, en Model voor de data.
 
Tim

Tim

07/02/2009 17:25:00
Quote Anchor link
Nieuwe png geupload aan de hand van de opmerkingen van Jerlmer:

http://www.agenebbes.nl/MVC-pattern.png

Bedankt voor je opmerkingen!
Gewijzigd op 01/01/1970 01:00:00 door Tim
 
Bo az

Bo az

07/02/2009 17:25:00
Quote Anchor link
De naam router vind ik daar een beetje raar gekozen, ik zou het eerder front controller noemen, het zelfde als het design pattern wat je daar kan implementeren: http://wiki.phpfreakz.nl/FrontController
 
Tim

Tim

07/02/2009 17:28:00
Quote Anchor link
De naam router had ik gekozen naar aanleiding van een 'tutorial' op sitemasters.be (http://www.sitemasters.be/tutorials/4/1/509/nieuw/MVC_pattern_uitgelegd), dus zodoende...

Toch bedankt voor je opmerking!
Gewijzigd op 01/01/1970 01:00:00 door Tim
 
Jelmer -

Jelmer -

07/02/2009 17:39:00
Quote Anchor link
Ik noem het zelf ook altijd de router, als een onderdeel van de "eerste controller", wat je dan weer een frontcontroller zou kunnen noemen. Vanuit deze eerste controller vraag ik dan aan de router naar de controller die hij denkt dat er nodig is, op basis van de url en dan start ik die in.

Bij mij is het zo dat iedere controller een view teruggeeft, en binnen de view kan je weer andere controllers uitvoeren en daarmee andere views binnen die view inladen. De meeste views die ik heb zijn dan ook maar kleine dingetjes, zoals een lijst van alle contactpersonen, een detail-overzicht van één contactpersoon.

Bij mij is het dus zo dat de controller en de view heen en weer met elkaar communiceren (al kan de view alleen maar een andere controller aanroepen, en ook die aanroep loopt dan weer via de frontcontroller, maar buiten de router om)

Maar het model kan niet bij de controller of de view, en is zich ook niet bewust van het bestaan van die twee. Ik denk dat het pijltje van View naar Model omgedraaid zou moeten worden. View doet wel aanroepen naar Model, maar andersom niet.

Vraagje: Waar zou jij de authentificatie (het inloggen en ingelogd blijven) en de autorisatie (gebruiker mag a wel, b niet) doen?
 
Tim

Tim

07/02/2009 17:43:00
Quote Anchor link
Authentificatie zou ik waarschijnlijk doen met een Model (dus een herbruikbaar stuk) en een stukje Controller (applicatiespecifiek). Aangezien er altijd wel een kleine verandering zit in het gebruik, het aantal lagen van autorisatie en dergelijke zou dit naar mijn idee dus een combinatie van model en controller moeten zijn.

Waarschijnlijk een stomme / simpele vraag van mijn kant: Wat moet je nou eigenlijk aanroepen en doen in je index.php? Is dat dan alleen de frontend-controller / router en die regelt de rest van het werk? Of moet daar ook weer een algemene view aangeroepen worden die het weergeven van de specifieke views via een eventuele templateparser doet? Of kijk ik nou helemaal de verkeerde kant uit :-P ?
Gewijzigd op 01/01/1970 01:00:00 door Tim
 
Jelmer -

Jelmer -

07/02/2009 17:52:00
Quote Anchor link
Mijn meest succesvolle poging was een controller voor het in- en uitloggen, en in/om het model had ik een soort extra laag die de autorisatie regelde.

Aan die laag kon je dan een gebruiker toekennen, en van ieder object dat het model in ging (om op te slaan) of uit kwam (wanneer het werd opgevraagd) werd gecontroleerd of de toegekende gebruiker het mocht lezen of wijzigen.

Het leuke was dat je hele specifieke regels aan deze laag kon toekennen. "Gebruiker a mag alleen objecten waarvan gebruiker_id gelijk is aan dat van zichzelf aanpassen." En omdat alle data via de model laag werd opgehaald, was het gewoon niet mogelijk om voorbij de autorisatie laag te komen. Ook leuk is dat je er in de rest van je controller en view niet meer naar om hoeft te kijken. Hoogstens een extra exception verwachten.

Probleem was dan weer bijvoorbeeld het inloggen zelf. Gasten mogen niet gebruiker-objecten bekijken, maar om in te loggen moet ik toch een gebruiker-object uit het model halen.

edit: Ik heb in mijn index.php de configuratie staan. Ik definieer de routes van de router, instantiëer de front-controller (die dan weer de router slikt als argument) en start de front-controller zodat die aan de router gaat vragen welke controller hij moet uitvoeren. Daarna geeft de front-controller uiteindelijk een view terug, en die "draw" ik dan waarna de HTML (of PDF, ligt eraan wat voor view er eigenlijk is teruggekomen) dus naar de gebruiker terug wordt gestuurd.

Je kan er nog voor kiezen om in je front-controller een extra view-laag te maken, waarbij de front-controller dus de view die hij terug krijgt van de controller die hij van de router moet uitvoeren binnenin zijn eigen view gaat tekenen. Die view van de front-controller kan dan bijvoorbeeld de layout-laag zijn. Hoofdnavigatie, breadcrumbs, footer, etc. Zo doe ik het zelf.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Tim

Tim

07/02/2009 19:54:00
Quote Anchor link
Thans voor je reactie!

Toch nog even een vraagje: Hoe gebruik je die view dan, instantieer je die in de controller, of geef je die al mee als argument?
 
Jelmer -

Jelmer -

07/02/2009 20:12:00
Quote Anchor link
Ik instantieer ze in m'n controllers, en koppel ze dan weer aan variabelen van andere views zodat je een hele constructie van views en subviews krijgt. Net als bij een desktop applicatie. Iedere controller geeft een view terug. En die view kan dan weer een compositie zijn van andere views.

Voordeel van deze aanpak is dat je allemaal kleine views kan maken voor bepaalde stukjes, en die dan weer overal kan hergebruiken. Het nadeel is dat het soms best chaotisch kan worden, en in de situatie waarin er een view is die niet samen gaat met de anderen.

Denk bijvoorbeeld een een view die met gd een grafiek tekent. Deze kan je niet mixen met views die HTML produceren. Op een of andere manier zal de grafiek-view omhoog in de hiërarchie van views en subviews bekend moeten maken dat hij alleen, zonder anderen om zich heen, weergegeven wil worden.

Gewoon een algemeen view-object in je applicatie hebben is ook niet vreemd. Je controller vertelt die view dan welk template hij in moet laden, welke variabelen hij eraan moet koppelen. Zend Framework onder andere doet het zo volgens mij. Het voordeel hierbij is de simpelheid, maar ik weet niet hoe het gaat wanneer je je applicatie zo maakt dat iedere controller z'n eigen kleine dingetje doet, en je meerdere controllers per pageview nodig hebt. Ik kan me voorstellen dat dat vrijwel onmogelijk wordt, omdat je de nauwe band tussen controller en view kwijt bent. Ik gebruik zelf altijd de eerste manier die ik had beschreven, en tot op heden is me dat redelijk goed bevallen (al is het niet ideaal)
 
Tim

Tim

07/02/2009 21:50:00
Quote Anchor link
Duidelijke uitleg, dank je! Ik zal ze snel allebei eens uit gaan proberen!
 
Tim

Tim

07/02/2009 22:11:00
Quote Anchor link
Is het ook de bedoeling dat je in een bepaalde controller kijkt of er bijvoorbeeld een formulier is meegezonden en op deze waarden een validator loslaat? Of is dit iets dat gewoon in de index.php moet gebeuren?

'Gelieve:
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.


Edit:

Sorry!
Gewijzigd op 01/01/1970 01:00:00 door Tim
 
Jelmer -

Jelmer -

07/02/2009 22:58:00
Quote Anchor link
Ik heb het zelf zo gemaakt dat ik in een (voor dat formulier specifieke) controller inderdaad kijk of er een formulier is meegezonden, en zo ja, dan vul ik een object met die waarden. (Een object is zo'n ding dat data uit het model representeert, bijvoorbeeld een instantie van een Contactpersoon)

Mijn model vereist van ieder object dat het zichzelf geldig verklaart. Met andere woorden, voordat $object->save() doet wat het moet doen, roept het intern eerst $object->is_valid() aan, wat al de properties van het object naloopt, en al dan niet een array met foute properties en hun "meldingen" teruggeeft. Die array gebruik ik dan weer in m'n formulier om eventuele foutmeldingen weer te geven bij de velden die die properties verzorgen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
try {
    $object->property = $_POST['property'];
    $object->save() {
        // binnen save()
        $object->_validate() -> array()
        if array# > 0 then throw Exception(array)
        else $object->_insert()
    }
    $view->success = true;
} catch(Exception $e) {
    $view->error = $e;
}
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.