[MVC] Model Layer uitgelicht

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

Junior Front end developer Onderwijssoftware

Functie Als Junior front end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van

Bekijk vacature »

Low-Code Expert/Developer: Power Platform Speciali

Bedrijfsomschrijving Als Low-Code Expert/Developer bij ons innovatieve bedrijf, neem je een cruciale rol op je in de creatie, ondersteuning en implementatie van diverse oplossingen met behulp van het veelzijdige Power Platform. Dit platform omvat Power Apps, Power BI, Power Automate, Power Virtual Agent en Azure Logic Apps. Het Power Platform biedt je de mogelijkheid om klanten te voorzien van naadloze integraties door op maat gemaakte oplossingen te creëren die compatibel zijn met (bijna) alle bestaande software-infrastructuren. Dankzij het uitgebreide scala aan toepassingen, krijg je de kans om als architect en projectleider van je eigen oplossing te fungeren. Dompel jezelf onder

Bekijk vacature »

Account Developer

Voor Bol.com zijn wij per direct op zoek naar een Account Developer voor 32-40 uur per week op het kantoor in Utrecht. Wil jij een directe bijdrage leveren door partners van de juiste data-inzichten te voorzien en via campagnes op nieuwe platformkansen en features te wijzen? Ben jij analytisch sterk en kun jij dit vertalen naar plannen en inspirerende gesprekken? Lees dan snel verder! wat bieden wij jou Salaris van €2400 - €2600 obv 40 uur Minimaal 6 maanden Werklocatie is Utrecht Werken bij bol.com wie ben jij Jij bent commercieel gedreven en weet altijd aan de juiste knoppen te

Bekijk vacature »

Teamlead PHP Developer

Functieomschrijving Voor een gewaardeerde werkgever in de buurt van Middelburg zijn wij op zoek naar een gemotiveerde teamlead PHP developer met affiniteit met Symfony/Laravel. Een enthousiast persoon die het ontwikkelteam komt versterken met het aanpakken van uitdagende projecten. Ben jij op zoek naar een uitdaging waar je de tijd en ruimte krijgt jezelf te ontwikkelen en je eigen IT-team aan te sturen? Lees dan snel verder! Die ga je doen: Bijdragen aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de PHP based applicaties; Ontwikkeling en beheer van de serviceportal in Symfony en de webshops in de tweede versie van

Bekijk vacature »

Ervaren C#.NET programmeur

Functieomschrijving Voor een moderne werkgever in regio Prinsenbeek zijn wij op zoek naar een ervaren C#.NET programmeur die graag de uitdaging aangaat. Je houdt je bezig met het ontwikkelen van maatwerk webapplicaties voor diverse klanten, waarbij complexe processen optimaal worden ondersteund. Verder ziet jouw takenpakket er als volgt uit: Ontwikkelen en onderhouden van C#.NET-applicaties; Schrijven van hoogwaardige, herbruikbare codes; Schrijven van technische documentatie en gebruikershandleidingen; Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen; Troubleshooten en oplossen van bugs in softwaretoepassingen; Werken met databases en dataopslagoplossingen; Implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens. Bedrijfsprofiel

Bekijk vacature »

Laravel developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Senior Java Ontwikkelaar

Dit ga je doen Werken aan uiteenlopende interne projecten voor grote (internationale) organisaties; Ontwikkelen van diverse (web)applicaties en platformen met technieken als Java, Azure en ASP.NET; Complexe vraagstukken tackelen met jouw expertise en ervaring; Waar nodig help jij je collega's om samen tot de juiste oplossing te komen. Hier ga je werken Als Java Developer kom je te werken bij een internationale organisatie in regio Amsterdam die zich richt op procesoptimalisatie door middel van zeer complexe IT oplossingen. Dit doen zij op het allerhoogste niveau met vestigingen over heel de wereld en met een groot aantal aansprekende, maatschappelijk betrokken klanten.

Bekijk vacature »

SQL database developer

Functie omschrijving Voor een software bedrijf in omgeving Breda zijn wij op zoek naar een SQL database ontwikkelaar. Dit bedrijf bouwt applicaties om processen in distributiecentra te optimaliseren. Ter uitbreiding van het huidige team developers zijn wij op zoek naar een SQL database ontwikkelaar. De klanten van dit groeiende bedrijf zitten door heel Europa en jouw werkzaamheden zullen er als volgt uitzien: Het samenstellen van de software op basis van de input vanuit de klant (T-SQL & C#.NET). Het bezoeken van klanten om de processen en mogelijkheden in kaart te brengen. Het ontwerpen van databases met T-SQL als programmeer laag.

Bekijk vacature »

Senior .NET Developer I goed salaris en deels thui

Bedrijfsomschrijving Mijn opdrachtgever is al ruim 20 jaar een gevestigde naam in de wereld van software ontwikkeling, met drie kantoren in de Randstad, waaronder Alphen aan den Rijn. Zij richten zich op het bouwen van IT-oplossingen die ervoor zorgen dat de productiviteit van klanten te allen tijden optimaal is. Hiervoor neemt jouw nieuwe werkgever het volledige ontwikkelproces tot haar rekening; van het eerste gesprek om de klantwensen in kaart te brengen, tot aan het uiteindelijke onderhoud van de opgeleverde oplossing. In totaal werken er inmiddels bijna 200 gemotiveerde IT-ers binnen deze organisatie. De gemiddelde leeftijd ligt rond de 35. Het

Bekijk vacature »

Front-end developer (Vue.js) gezocht!

Functie Als Front-end developer is het jouw doel om efficiënte en effectieve frontend code te ontwerpen, ontwikkelen en onderhouden die goed aansluit bij de functionele behoefte vanuit de klant. Je zorgt voor optimale SEO-resultaten, sitespeed en frontend security. You build it, you run it, you own it! Je maakt deel uit van een DevOps Scrum team en werkt samen met back-end developers, test-engineers, interaction designers en een projectmanager. Er zijn verschillende groepen Scrum teams. Een roadmap team is jouw ‘’thuisbasis’’, daar wordt gewerkt aan doorontwikkeling van bestaande omgevingen voor een aantal klanten. Hiernaast zijn er projectteams waar nieuwe omgevingen worden

Bekijk vacature »

Senior .NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Senior pega developer

You work on software that makes colleagues and customers happy! Thanks to your IT skills, De Mandemakers Groep really makes a difference for its customers. Do coding, testing and deployments make your heart beat faster? Then apply today as Senior Pega Developer at De Mandemakers Groep! Wat ga je doen? The job title gives it away: You will be developing Pega software. This ranges from technical design, coding and testing to test automation, deployments and bug fixing. Your goal is to continuously improve our systems so that colleagues can work efficiently and customers receive optimal service. You don't have to

Bekijk vacature »

Full Stack C#.NET developer

Functieomschrijving Wij zijn op zoek naar een gepassioneerde Full Stack C#.NET Software Developer. Als Software Developer ben je verantwoordelijk voor het ontwikkelen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere ontwikkelaars en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Ontwikkelen en onderhouden van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Testen en valideren van de ontwikkelde software. Actief deelnemen aan code reviews en bijdragen aan het verbeteren van de kwaliteit van de software. Je gaat aan

Bekijk vacature »

In-house .NET software developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house development functie? Maak jij graag hét verschil m.b.t. interne automatisering? Haal jij energie uit het automatiseren van processen voor je eigen collega's? Dan hebben wij de perfecte vacature voor je! Voor een gezellig Brabants familiebedrijf, zijn wij op zoek naar een .NET software developer. Je gaat in deze zelfstandige functie werken aan de ontwikkeling van eigen applicaties & en het koppelen van deze applicaties aan de ingekocht software. Jouw werkzaamheden zien er als volgt uit: Het management team signaleert behoeftes vanuit de business. Vervolgens worden deze behoeftes uitgewerkt en geprioriteerd.

Bekijk vacature »
Jasper DS

Jasper DS

23/01/2013 12:22:51
Quote Anchor link
Hallo iedereen,

ik heb de voorbije dagen erg veel gelezen over het MVC-pattern, een ORM en het datamapper-pattern.
de VC van het MVC is voor mij nu vrij duidelijk. Ik heb een eigen interpretatie gemaakt die waarschijnlijk nog wel een pak beter kan maar het volstaat voor wat ik nu wil doen.

Dan schiet er nog de model over. Ik heb hier op het forum geleerd dat je de database / storage moet benaderen vanuit een mapper en een Domain object. Dit topic op stackoverflow ging er nog een beetje dieper op in en voegde aan deze twee elementen nog "de model" toe.

De model layer bestaat dus uit:
  • Domain object
  • Mapper
  • Model
  • StorageClass


Het domain object is vrij duidelijk, het houd de data vast en controleert of de data aan het juiste type voldoet. Het domain object is niet verantwoordelijk voor de storage van de data.

De mapper is de verbinding tussen het domain object en de storage. In de mapper staat geen SQL, de mapper spreekt enkel de juiste storage classe aan die op zijn beurt de rest van het werk doet.

Model zorgt ervoor dat er geen logica in de controller komt.

Je zou dus kunnen zeggen dat de model en mapper er zo uit zien:
Model
  • getAll()
  • getTopFive()
  • getRow()
  • save()

Mapper
  • select()
  • update()
  • delete()


Maar is de mapper en de model eigenlijk niet gewoon hetzelfde en kan je deze niet samenvoegen tot één classe?

Maar achtergrond informatie over mijn manier van denken vind je in deze PDF

Bedankt voor het lezen!
Gewijzigd op 23/01/2013 12:23:07 door Jasper DS
 
PHP hulp

PHP hulp

26/04/2024 00:18:23
 
Wouter J

Wouter J

23/01/2013 13:57:22
Quote Anchor link
Lees eens deze mooie minitut van Niels over models, mappers en meer in het MVC pattern: http://www.phphulp.nl/php/forum/topic/oop-gedachtengang/85017/3/#609065
 
Erwin H

Erwin H

23/01/2013 14:22:47
Quote Anchor link
Ik heb die tut van Niels niet doorgelezen, dus mogelijk dat ik iets dubbels zeg, bij voorbaat excuses dan.

Maar mijn antwoord op de vraag of de mapper en het model niet samen gevoegd zouden kunnen worden is het volgende.
Kan je je een situatie voorstellen waarin je het ene wel wil aanpassen en het andere niet? Zo ja, dan zou ik het gescheiden houden. In dit specifieke geval kan ik me bijvoorbeeld voorstellen dat je voor een applicatie een normale relationele database gebruikt. MySQL, Oracle, MSSQL, DB2, whatever. Volgend jaar echter krijg je de geest en wil je veranderen naar een nosql database. Op zich kan daarmee je hele applicatie gelijk blijven, alleen de manier waarop je de data in de backend verwerkt wordt anders. In mijn ogen blijven de functies zoals je die in het model hebt gedefinieerd dan gelijk, maar de implementatie van de mapper zal anders worden.

Bovenstaand voorbeeld is wellicht niet van toepassing op jou. Probeer dan een situatie voor jezelf te schetsen waarbij je wel de een wilt veranderen en de ander niet. Kan je zo'n situatie werkelijk niet bedenken, dan kan je waarschijnlijk de twee samenvoegen.



P.S. bovenstaande denkwijze geldt natuurlijk niet alleen voor dit deel van een applicatie, maar voor alle onderdelen. Het is in feite mijn grondbeginsel voor het aanmaken van een nieuw object of niet.
 
Jasper DS

Jasper DS

24/01/2013 17:30:23
Quote Anchor link
Wouter J op 23/01/2013 13:57:22:
Lees eens deze mooie minitut van Niels over models, mappers en meer in het MVC pattern: http://www.phphulp.nl/php/forum/topic/oop-gedachtengang/85017/3/#609065

Ook die reactie heb ik al tientallen keren doorgenomen alle paterns opgezocht etc. Ik vind dat Gateway-pattern wel interessant maar weet nog niet hoe ik dat moet implementeren.

Erwin H:
Ik heb die tut van Niels niet doorgelezen, dus mogelijk dat ik iets dubbels zeg, bij voorbaat excuses dan.
...

Hoi Erwin,

ik ben wel van plan om meerder storage types te ondersteunen. Dus dat ik eigenlijk als ik een nieuwe storage toevoeg (Json, Mysql, MSSql) dat ik eigenlijk enkel de storage classe (lees adapter(?)) hoef aan te passen. Maar om dat te bereiken kan ik de mapper en de model nog steeds samenvoegen hé?

Ik dacht dat de regel was dat een mapper enkel Crud methodes kon bevatten ofzo? Indien dat het geval was kon de mapper eigenlijk voor eender welk object gebruikt worden niet?
 
Wouter J

Wouter J

24/01/2013 17:34:40
Quote Anchor link
Quote:
Dus dat ik eigenlijk als ik een nieuwe storage toevoeg (Json, Mysql, MSSql) dat ik eigenlijk enkel de storage classe (lees adapter(?)) hoef aan te passen. Maar om dat te bereiken kan ik de mapper en de model nog steeds samenvoegen hé?

Ja, jij hebt ooit de database abstractie layer nog 1 klasse opgeschoven en in Storage klassen ondergebracht. Erwin plaats die Database Abstractie in de Mapper. Nu wordt bij jou de Model slechts alleen een wrapper die zijn functies naar een directe Mapper equivalent stuurt, wat natuurlijk volstrekt zinloos is.

Quote:
Ik dacht dat de regel was dat een mapper enkel Crud methodes kon bevatten ofzo?

Nee, we hebben (jij hebt) ooit een MapperInterface gemaakt die ervoor zorgt dat we tenminste toegang hebben tot de 4 crud methods. Maar je kan zoveel methods erin doen als je wilt, getById; getByName, ect.
 
Jasper DS

Jasper DS

24/01/2013 20:28:56
Quote Anchor link
oké mooi, dan denk dat ik in mijn geval de mapper of de model kan schrappen (kwestie van naamgeving). Ik kan de mapper dan alle functies geven die ik denk te gebruiken.
 
Jasper DS

Jasper DS

27/01/2013 11:33:07
Quote Anchor link
Ik heb momenteel toch een aparte model en mapper. De mapper bevat select(), update(), delete() en de model bevat getAll(), getById(), getByCat(). De functies uit de model spreken een functie aan uit de mapper. getAll() ziet er bijvoorbeeld zo uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
public function getAll()
{

    $articleMapper = new ArticleMapper($this->getStorage());
    $articles = $articleMapper->find(array('id', 'name', 'discription'));
    return $articles;
}

?>


In de controller word de model aangeroepen met de specifieke functies, nooit de mapper.

Lijkt jullie dat oke?
 
Wouter J

Wouter J

27/01/2013 13:14:11
Quote Anchor link
Het mag, het lijkt mij alleen een extra laag vol met onnodige moeilijkheid. Een principe dat hier dan vaak genoemd wordt is KISS - Keep It Simple Stupid.

Tevens is regel 4 natuurlijk uit den boze, hiervoor moet je dependency injection gebruiken.
 



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.