[OOP] MVC model controller

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij op zoek naar een nieuwe uitdaging? Lees dan snel verder! Voor een organisatie in de regio Utrecht die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in

Bekijk vacature »

Database developer - SQL

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je sluit aan bij meetings en brengt het gehele logistieke proces in kaart. Vervolgens ga je als lead developer aan de slag om de klus te klaren. Je stuurt het junior developer team en helpt, zo nodig,

Bekijk vacature »

SQL developer

Functieomschrijving Voor een erkende werkgever in de omgeving van Tilburg zijn wij op zoek naar een ervaren SQL ontwikkelaar. 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 er als volgt uit te zien: Het ontwerpen en implementeren van databaseschema's: Je bent in staat om een database te ontwerpen en de structuur van tabellen, relaties, indexen en andere objecten te definiëren; Het schrijven van complexe SQL-query's: Je kunt complexe query's schrijven om gegevens uit de database

Bekijk vacature »

Medior/senior front end developer

Functie Vanwege de groei binnen het bedrijf zijn ze op zoek naar een Technische front end developer. Momenteel hun front end back end team gescheiden aan het werk. Hier willen ze verandering in krijgen. Omdat ook veel interne applicaties ontwikkeld worden zoeken ze iemand die hen kan helpen om de interne applicaties te voorzien van de juiste Vue.js componenten. Zodoende willen ze de interactie tussen front end en back end versoepelen en de volgende stap binnen het platform gaan zetten. Deze componenten die jij ontwikkeld zullen in elk project gebruikt worden. Het back end team bestaat momenteel uit 8 ontwikkelaars

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

.NET Developer C# VB

Samengevat: Deze werkgever is actief in software voor het matchen van vraag en aanbod van gebruikte auto-onderdelen. Ben jij een .NET Developer? Heb je ervaring met het ontwikkelen (REST) en integreren van webservices? Vaste baan: C# .NET Developer C# VB HBO €2.600 - €6.200 Wij ontwikkelen software om vraag en aanbod van onderdelen van personenauto's bij elkaar te brengen. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. De branche van dit bedrijf is Automotive. Functie: Voor de vacature als .NET Developer Dordrecht HBO ga 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 »

Fullstack JavaScript Developer Webapplicaties

Bedrijfsomschrijving Voor deze organisatie ben ik op zoek naar een getalenteerde Fullstack JavaScript Developer. Ze is een snelgroeiend software development agency dat zich richt op het ontwikkelen van moderne webapplicaties en complexe systemen voor haar klanten. Ze is gevestigd onder de rook van Utrecht en heeft als doel om tot de top van de Nederlandse agencies te behoren. Deze organisatie maakt softwareoplossingen voor verschillende soorten bedrijven. Innovatie staat hoog in het vaandel en je zult dus met nieuwe technieken aan de slag gaan. Ze hebben klanten in vele branches zitten, zoals retail, finance, gezondheid en onderwijs. De diverse klanten zorgen

Bekijk vacature »

Senior SQR Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 13333 Introductie Are you passionate about contributing to the world's most advanced machines. Do you thrive in a challenging environment working with highly motivated and skilled teams? If so, we have the perfect opportunity for you! We are seeking a Senior Software Design Engineer for Sequence Tooling to play a critical role in creating and maintaining mission-critical software applications. In this role, you will focus on achieving maintainable software architecture that is transparent and easy to extend while maintaining a strong focus on software quality. You will work closely with

Bekijk vacature »

C# .NET Developer IoT SQL Server

Samengevat: Wij ontwikkelen innovatieve oplossingen om apparaten en bezittingen op een eenvoudige en flexibele manier te beveiligen. Ben jij een C# .NET developer? Heb jij ervaring met C# en SQL server? Vaste baan: C# .NET Developer IoT HBO €3.200 - €4.500 Deze werkgever is gespecialiseerd in hoogwaardige GSM/GPRS alarm- en telemetrietechnologie. Met een eigen productlijn en klantspecifieke ontwikkelingen biedt deze werkgever oplossingen om op afstand te meten, melden, loggen en aansturen, ook op plaatsen zonder stroomvoorziening. Onze producten worden gekarakteriseerd door flexibiliteit in de configuratie, betrouwbaarheid en een extreem laag stroomverbruik. Zij werken voor MKB klanten. Deze werkgever heeft veel

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

C# Developer

Dit ga je doen De requirements in kaart brengen van de klant; Implementeren van functionele en technische specificaties bij opdrachtgevers; Oplossen van bugs; Meewerken aan maatwerksoftware voor nieuwe opdrachtgevers; Het testen en uitleveren van nieuwe functionaliteiten naar de acceptatie en productieomgeving De database ontwikkelen en onderhouden; Hier ga je werken Onze klant is gevestigd in het westen van Nederland en is gespecialiseerd in het ontwikkelen van software voor de levensmiddelen industrie. De software die het team maakt optimaliseert voornamelijk de administratieve processen, maakt deze meetbaar en zorgt ervoor dat de data zo goed mogelijk gebruikt kan worden. Binnen een van

Bekijk vacature »

Senior Front end developer

Functie Wij zijn op zoek naar een ambitieuze, zelfsturende Front-end Expert die ons (internationale) team komt versterken. Onze huidige software development afdeling bestaat uit 7 developers en designers. Wij zijn een écht softwarehuis, dus ervaring in software development is wel echt een must. Er wordt tegelijkertijd aan meerdere projecten gewerkt, voor mooie toonaangevende klanten. Je hebt dus regelmatig te maken met deadlines en opleveringen. Een deel van onze omgeving is in Angular.JS. Dit deel wordt langzamerhand omgebouwd naar de nieuwste versie van Angular. Jouw werkzaamheden zullen bestaan uit: Het aansturen en begeleiden van jouw collega’s Het implementeren van visuele elementen

Bekijk vacature »

ERP Developer fleet managementsysteem

Wat ga je doen als ERP Developer fleet managementsysteem? Als ERP developer speel jij een belangrijke rol bij het doorvoeren van wijzigingen en verbeteringen binnen het fleet managementsysteem. Jouw expertise op het gebied van ERP systemen stelt jou in staat om de applicatie optimaal te laten functioneren en te blijven ontwikkelen. Als lid van het IT-team werk je nauw samen met andere developers en het business team om het fleet managementsysteem te integreren met andere systemen. Je bent verantwoordelijk voor het ontwikkelen van nieuwe functionaliteiten en het implementeren van verbeteringen op basis van de wensen en eisen van onze klanten.

Bekijk vacature »

Java Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »
Ozzie PHP

Ozzie PHP

26/02/2019 10:48:24
Quote Anchor link
Ola,

Een vraagje ... als ik op internet rondkijk dan zie ik dat er verschillende interpretaties zijn van het MVC-model. En dan doel ik met name op de relatie tussen controller, model en view.

Zo zie je op Wikipedia een afbeelding waar model en view met elkaar communiceren.

https://nl.wikipedia.org/wiki/Model-view-controller-model

Op de onderstaande pagina zie je echter een afbeelding waar dat juist niet het geval is. Hier praat de controller met het model en de view, maar hebben het model en de view geen weet van elkaar.

https://www.quora.com/What-is-the-difference-between-the-OOP-object-oriented-programming-concept-and-the-MVC-model%E2%80%93view%E2%80%93controller-concept

Deze laatste manier is hoe ik zelf ook tegen het MVC-model aankijk. De controller vangt het request op, praat met het model om data op te halen en stuurt vervolgens de juiste gegevens naar de view.

Er is echter 1 ding wat ik me afvraag.

Is het model uitsluitend bedoeld om data op te halen? Of mag er ook 'logica' in zitten?

Een heel simpel voorbeeldje ...

Een website met films moet aanbevolen films tonen voor ingelogde bezoekers. Voor iemand van 12 (een kind) moeten andere films worden getoond dan voor iemand van 25.

Maar waar zit nu de logica ... in de controller of in het model?

Stuurt de controller als de leeftijd jonger is dan x jaar een verzoek naar het model om aanbevolen 'kinderfilms' op te halen? Of stuurt de controller een generiek verzoek naar het model om aanbevolen films op te halen, en bepaalt het model zelf op basis van de leeftijd welke films hij ophaalt? Wie is zeg maar 'leading' in dat proces. Zijn daar richtlijnen voor?

Toevoeging op 26/02/2019 10:57:51:

Misschien nog een tweede voorbeeldje ...

Stel we hebben een loginpagina. Iemand voert z'n gebruikersnaam en wachtwoord in. Wie voert dan vervolgens de controle uit? Verstuurt de controller een verzoek naar het model om het wachtwoord (hash) op te halen, en kijkt de controller vervolgens zelf of dat overeenkomt met het opgegeven wachtwoord? Of stuurt de controller enkel een verzoek 'controleer wachtwoord' naar het model, en voert het model de gehele controle zelf uit?
 
PHP hulp

PHP hulp

24/11/2024 19:06:43
 
Ward van der Put
Moderator

Ward van der Put

26/02/2019 11:03:01
Quote Anchor link
Die logica zit in een ander model. :D

Een film is namelijk een ander model dan een lijst met films. De controller stuurt in dit geval het model voor een lijst of collectie met films aan, niet dat voor een film.

(Ik gebruik zelf overigens ook liever de tweede interpretatie van het MVC-pattern omdat het in PHP meestal geen zin heeft een view rechtstreeks aan een model te hangen zonder tussenkomst van een controller. Het kán wel, maar het heeft weinig praktische toepassingen.)
 
Ozzie PHP

Ozzie PHP

26/02/2019 11:09:02
Quote Anchor link
>> Een film is namelijk een ander model dan een lijst met films. De controller stuurt in dit geval het model voor een lijst of collectie met films aan, niet dat voor een film.

Ik snap wat je bedoelt :-)

Maar de vraag blijft hetzelfde ... wat vindt waar plaats. Volgens mij (correct me if I'm wrong) zou de controller niet ZELF rechtstreeks die lijst met films moeten ophalen, maar verloopt dat via het model dat bij die controller hoort. Dus de controller zegt tegen het model dat het model (via een ander model) een lijst met films moet ophalen en moet teruggeven aan de controller. Tot zover klopt het denk ik nog?

Maar nu dus de vraag ... in het voorbeeldje met de leeftijd ... zegt de controller tegen het model "geef me films voor iemand van 12"? Of zegt de controller "geef me een lijst met films" en bepaalt het model welke films het teruggeeft?
 
Ward van der Put
Moderator

Ward van der Put

26/02/2019 11:27:26
Quote Anchor link
Het kan beide, maar bij complexere criteria is het makkelijker de verantwoordelijkheden bij het model te leggen. Bijvoorbeeld:

class AdultMovies extends Movies

De controller hoeft nu niet te weten wat de criteria zijn die het model gebruikt om tot een bepaalde samenstelling van films te komen. Dan kan bijvoorbeeld een WHERE ages >= 18 zijn, maar ook een set van geheel andere criteria (bijvoorbeeld een rating volgens een of ander reviewsysteem).

Heb je omgekeerd echter een applicatie nodig die juist wél gericht op specifieke leeftijden kan zoeken, dan wordt de leeftijd een expliciet argument waarmee de controller het model moet kunnen aansturen.
 
Ozzie PHP

Ozzie PHP

26/02/2019 12:27:21
Quote Anchor link
Hmmm,oké daar zit wat in.

En het andere voorbeeldje wat ik gaf wat betreft inloggen?

Dus een gebruiker logt in. De LoginController ontvangt de ingevoerde gebruikersnaam en wachtwoord. Gaat de controller nu zelf de controle uitvoeren of het wachtwoord klopt? Of stuurt hij de gebruikersnaam en wachtwoord naar het model en voert het model de controle uit?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/02/2019 20:01:37
Quote Anchor link
>> Dus een gebruiker logt in. De LoginController ontvangt de ingevoerde gebruikersnaam en wachtwoord. Gaat de controller nu zelf de controle uitvoeren of het wachtwoord klopt? Of stuurt hij de gebruikersnaam en wachtwoord naar het model en voert het model de controle uit?

Hoe logt de gebruiker in? Via een een login formulier of een api of misschien wel een via de commandline (beheerder tools) ?

Welke rol heeft jantje? wat mag jantje wel en niet?

Welke veiligheidsmaatregelen zijn van kracht? (misschien wel 2-step-verification)

Welk algoritme wordt gebruikt bij het hashen van de wachtwoorden?

Heb ik het antwoord al gegeven? :p
 
Ozzie PHP

Ozzie PHP

26/02/2019 20:37:10
Quote Anchor link
>> Heb ik het antwoord al gegeven? :p

Nou, je hebt in ieder geval een boel vragen gesteld :D

Maar ik neem aan dat je wil zeggen dat het in het model thuishoort omdat het logica betreft. Correct?
 
Thomas van den Heuvel

Thomas van den Heuvel

26/02/2019 21:30:13
Quote Anchor link
De beste opmerking die ik hier ergens over gelezen heb:

Vergeet niet dat een model een IDEE is, het is een leidraad bij het op een bepaalde manier inrichten van een applicatie. Hierbij kun je dus rustig beslissingen nemen om dingen anders in te richten zolang je de hoofdlijnen maar in grote lijnen aanhoudt.

Het heeft geen enkele zin om het MVC-model heel strict te volgen omdat dit mede in kan houden dat je allemaal virtuele muren optrekt om bepaalde onderdelen, of dat deze compleet onbereikbaar voor elkaar zijn op het moment dat dat wel eens verdomd handig geweest had kunnen zijn.

Je moet dit soort ontwerpbeslissingen nemen op grond van wat handig en praktisch is, in plaats van jezelf in de blubber vastrijden enkel en alleen om een soort van ideaalbeeld van een methodiek na te streven, die je verder echt helemaal niets oplevert.

Ik heb dit soort "discussies" al zo vaak gezien op het internet, en elke MVC-zealot predikt daarbij dat zijn geloof het ware is...

Wie zegt dat die precieze aanpak (of welke specifieke MVC-aanpak dan ook die ergens uit de doeken wordt gedaan) de "beste" is voor jouw applicatie? :/
Gewijzigd op 26/02/2019 21:37:53 door Thomas van den Heuvel
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/02/2019 21:36:02
Quote Anchor link
Een model is nog erg basic maar wel beter dan in een controller. Je moet de controllers klein houden.
Denk breder:

- een security class die zich gaat gedragen naar de instellingen die gedaan zijn.
- meerdere password encoders (sha, bcrypt, ...) waarvan er één gebruikt wordt per Authenticator (één Authenticator zou een LoginFormAuthenticator kunnen zijn)
- een Firewall die bepaalt wat er afgeschermd moet worden
- Authorization: Wie is er gemachtigd om het gevraagde te mogen zien/bewerken/verwijderen

Als je zondag niets te doen hebt zou je dit eens kunnen lezen
 
Ozzie PHP

Ozzie PHP

26/02/2019 22:10:05
Quote Anchor link
@Frank: oké, got the idea ;)

@Thomas:

Ja, snap wel wat je zegt. Het is inderdaad voor meerdere interpretaties vatbaar. Ik las ook ergens dat je de controllers zo klein mogelijk moet houden (ook wat Frank zegt) en models zo groot mogelijk. Volgens mij stond er zoiets als "use skinny controllers and fat models". Ik denk dat ik de controller een beetje moet zien als een soort dirigent die met z'n stokje aanwijst wat er moet gebeuren, en het model als het orkest dat de muziek produceert :-)
 
Thomas van den Heuvel

Thomas van den Heuvel

26/02/2019 22:54:28
Quote Anchor link
Maar heb je ondertussen al wat muziek gemaakt, of ben je nog steeds je orkest aan het samenstellen? :p

En hoe klinkt die muziek dan :].
 
Ozzie PHP

Ozzie PHP

26/02/2019 23:19:48
Quote Anchor link
Ik ben nog de juiste bandleden bij elkaar aan het rapen ;-) En ergens heel in de verte beginnen er wat trompetten te blazen :)
 
Ward van der Put
Moderator

Ward van der Put

27/02/2019 08:56:40
 
Ozzie PHP

Ozzie PHP

27/02/2019 10:29:50
Quote Anchor link
Haha ... nice! :-)))
 



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.