MVC-model PM-systeem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.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 »

.NET Developer

Functie omschrijving Net afgestudeerd en op zoek naar een leuke baan als developer? Zoek niet verder! Ik heb een functie beschikbaar als back-end developer, bij een leuk familiebedrijf. Je gaat werken met de Microsoft stack en de technieken C# en .NET. Verder maak je gebruik van MVC en Entity framework. SQL kent ook geen geheimen voor jou. Jouw verantwoordelijkheden: Nieuwe maatwerk software bouwen; API koppelingen bouwen; Applicaties en software optimaliseren; Back-end programmeren. Een erg uitdagende functie, met veel vrijheid. Je kan meerdere dagen thuis werken en als je op kantoor werkt wordt de lunch verzorgd. Heb je interesse, reageer dan

Bekijk vacature »

C# .NET Backend Developer HBO Javascript

Samengevat: Deze werkgever is een professionele speler op gebied van IT en E-Commerce. Wil jij werken voor een e-commerce platform? Heb je ervaring met C#, Javascript en Scrum? Vaste baan: C# .NET Developer Backend E-Commerce 3.400 - 4.500 Backend Developer Wij ontwikkelen software voor E-Commerce toepassingen. Ons eigen Content Management systeem biedt een integrale oplossing met diverse ERP software. Onze systemen zijn vaak complex en omvangrijk en draaien bij grote organisaties. Maar ook kleine ondernemingen hebben steeds vaker behoefte aan een vlekkeloos werkende E-Commerce oplossing. Zij bieden een uitdagende werkomgeving met gezellige collega's. Je krijgt veel vrijheid en er is

Bekijk vacature »

Front-end Developer

Do you want to work with the latest technologies on the development of new systems and applications? Create elegant interfaces using VueJS for thousands of users? Get moving and strengthen Nederlandse Loterij as a Front-end Developer. Thanks to your efforts, our services are always presented in style. As a Front-end Developer you are responsible for website development and improving customer experience based on data analyze. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Front-end Developer you score by: Writing elegant, testable components without side-effects to provide functionality to the users Website development, adding

Bekijk vacature »

PHP developer - Digital Agency

Functie Het team telt momenteel 20 collega’s, bestaande uit developers (front- en backend) en het operations team, waaronder ook het management en twee scrum masters vallen. Ze zijn op zoek naar een PHP developer die in staat is zelfstandig te werken. Je komt te werken in één van de drie scrumteams en gaat aan de slag met een project voor de klant. Het fijne hieraan is dat je wel afwisseling hebt qua werk, maar tegelijkertijd doorlopend werkt voor bestaande klanten. Hierdoor krijg je ook de kans om echt de diepte in te gaan en innovatieve technische oplossingen neer te zetten.

Bekijk vacature »

Fullstack 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 »

Back end developer PHP

Functie Heb jij altijd al eens bij een bedrijf willen werken waar jij géén nummertje bent, die alleen maar uitvoerend werk doet? Dan zou je hier perfect passen! Tuurlijk, je werkt aan projecten voor grote of kleine bedrijven… Het enige verschil hier is, jouw mening telt hier écht. Jouw inbreng wordt gewaardeerd, serieus genomen en gebruikt. En vergeet niet, je werkt niet alleen aan deze projecten. Er werken in totaal ruim 25 developers en designers, onderverdeeld over 3 development teams. Voornamelijk bestaande uit Medior en Senior developers, die samen voor een inspirerende en ambitieuze omgeving zorgen. Hun visie is namelijk

Bekijk vacature »

Senior .Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Senior front-end developer (React)

Functie Momenteel zijn ze op zoek naar een ervaren front-end developer. Als senior werk je nauw samen met 5 collega developers. Een klein scrum team dus, met korte lijnen waardoor jouw ideeën snel tot uitvoering gebracht kunnen worden. De huidige applicaties worden veelal ontwikkeld met o.a. React, Redux, TypeScript. Ze zijn echt op zoek naar een kartrekker in het team. Naast het meedenken over, opzetten en uitvoeren van bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Hierin nemen ze graag de tijd om mensen de ruimte te

Bekijk vacature »

Full-stack Developer

As a Full-stack developer at KUBUS, you will develop the (web)applications and services of BIMcollab. You will work on both the front- and back-end. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact in the market, but small enough that as an individual developer you can have an impact and really make a difference. Our development team consists of over 40 developers, testers, scrum masters and product owners, divided over

Bekijk vacature »

C#.NET Developer

Functieomschrijving We are looking for a dutch native speaker In deze uitdagende functie ga je werken als onderdeel van het development team, in de functie van C#.NET Developer, Je gaat maatwerk software bouwen voor diverse klanten. Ook optimaliseer je bestaande software en bouw je API koppelingen. Je bent vooral met back-end development bezig. Je krijgt veel vrijheid in deze functie en je krijgt de kans om mee te denken in bedrijfsprocessen. Deels thuiswerken is geen enkel probleem! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van

Bekijk vacature »

.Net ontwikkelaar - Het schoolsysteem verbeteren!

Bedrijfsomschrijving Onze klant is een prettige en kleinschalige organisatie waar hard gewerkt wordt om het onderwijs te verbeteren. Daarom werken ze aan complexe om administratieve, financiële en facilitaire processen te versnellen en te verbeteren. Dit doen ze vanuit een platte organisatie voor klanten die door geheel Nederland verspreid zitten, hier horen vanzelfsprekend een aantal aansprekende HBO scholen en universiteiten toe. Functieomschrijving Je komt terecht in een organisatie waar op dit moment 2 scrumteams werken. Jij zal als .Net developer binnen 1 van deze scrumteams functioneren, iedereen binnen dit team heeft zijn/haar eigen expertise waardoor er met verschillende invalshoeken aan een

Bekijk vacature »

Fullstack Developer

Functieomschrijving Heb je kort geleden jouw HBO diploma ICT development behaald? Of zit je nog aan het begin van je carrière en heb je affiniteit met C#.NET? Voor een erkende werkgever in de omgeving van Oosterhout zijn wij op zoek naar een fullstack developer. Als C#.NET developer werk je samen met een vooruitstrevend team aan het ontwikkelen van maatwerk software voor klanten. Je hebt affiniteit met SQL, maar nog belangrijker is dat je kennis en ervaring hebt met C#.NET. Jouw werkzaamheden zien er als volgt uit: Het ontwikkelen van onze high-availability en high-performance backend; Je begint de dag rond 8:30

Bekijk vacature »

C# .NET Developer

Functie omschrijving Wij zijn op zoek naar een C# .NET Developer voor een leuke opdrachtgever in de omgeving van Hilversum! Voor een leuk bedrijf in de omgeving van Hilversum zijn wij op zoek naar een Back-end developer die klaar is voor een nieuwe uitdaging. Ben jij iemand die graag aan verschillende projecten werkt en het ook leuk vindt om bij klanten op bezoek te gaan? Dan ben jij de perfecte kandidaat! Deze functie is erg divers, je moet dus goed kunnen schakelen. Je komt te werken in een klein team van developers. Binnen het bedrijf hangt er een gemoedelijke informele

Bekijk vacature »

Front end developer React

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 »
Citroen Anoniem Graag

Citroen Anoniem Graag

08/06/2008 21:31:00
Quote Anchor link
Goede avond php-ers,

Deze avond zit ik mij wederom te verdiepen in OOP en ik kwam tot de ontdekking dat het 3-lagen systeem heel mooi werk. Maar ik weet niet zeker of ik het goed begrijp want ik heb er nu zoveel over gelezen dat ik de kluts een beetje kwijt ben.
Ik heb nu een situatie geschetst en mij vraag is wordt het MVC-model hier goed toegepast.
Het gaat om een PM systeem

ModelPM
+ getPMById(iId)
+ getAllPM()
+ SendPM($iFromUser, $iToUser, $sSubject, $sPm)
+ DeletePM($iId)
+ SetRead($iId)
+ SetUnread($iId)

ViewPM
+ Mijn basic Template parser of smarty oid

ControllerPM
De controllor 'bedenkt' welke actie er ondernomen moet worden (leidt hij bevoorbeeld af aan de get-waarden) en roept vervolgens deze actie's aan bij het model. Vervolgens propt hij de verkregen data zo in de view (template) en tádá, je werkt.

Op die manier kan je door simpelweg een andere view te nemen een xml bestand maken, een html bestand maken, etc.
Klopt dit?

Groetjes Freek
 
PHP hulp

PHP hulp

23/04/2024 17:53:07
 
Joren de Wit

Joren de Wit

08/06/2008 21:39:00
Quote Anchor link
De situatie die je schetst klopt ongeveer wel, alleen zit het nog niet helemaal lekker in je model(s).

Zie je models als objecten. Een ModelPM stelt dan een PM voor en bevat dus alleen methods (acties) die op 1 PM toegespast kunnen worden. De method getAllPM() hoort dan dus ook niet thuis in dit model.

Bekijk dus nog eens goed welke models je nu hebt en welke je nog nodig hebt.
 
Citroen Anoniem Graag

Citroen Anoniem Graag

08/06/2008 21:56:00
Quote Anchor link
Idd, in de gauwigheid even over het hoofd gezien. Dan zal het zoiets moeten worden.

ModelPMLijst (weet ff geen andere naam ModelPMInbox miss?)
+ GetPMs($iUser)
+ etc

ModelPm
+ getPM(iId)
+ SendPM($iFromUser, $iToUser, $sSubject, $sPm)
+ DeletePM($iId)
+ SetRead($iId)
+ SetUnread($iId)

ViewBasic
+ Mijn basic Template parser of smarty oid

Maar dan kom ik niet helemaal uit de models, hoe zouden die eruit zien en welke methods zouden ze (minimaal) hebben?
 
Jelmer -

Jelmer -

08/06/2008 22:09:00
Quote Anchor link
Ik zou ModelPM (gewoon "PM" of "PersonalMessage" is toch eigenlijk een logischere naam?) slechts methods geven die de eigenschappen van een PM kunnen aanpassen. Je zou de methods zelfs achterwege kunnen laten en hem alleen properties geven. De eigenschappen van een PM.

Dan zou ik er een klasse naast maken, bijvoorbeeld PMMapper, beetje a la jouw ModelPMLijst, die vervolgens de PM's uit de database kan halen (en er instanties van PM van maakt, en die in een array teruggeeft) en PM-instanties in de database kan zetten. Je model bevat dan geen SQL, alleen maar controle over wie en hoe je PM object aangepast mag worden. Je Mapper bevat de SQL code en is verantwoordelijk voor het opslaan. Deze mapper is specifiek voor het model, maar niet voor de instantie. Je hebt dus maar 1 instantie van PMMapper nodig, waar je meerder instanties van verschillende PM's hebt.

Idee erachter is dat je op deze manier relatief gemakkelijk de manier van opslaan van een PM kan veranderen. Nu wordt hij bijvoorbeeld opgeslagen in een database, maar het kost niet veel moeite om hem zo aan te passen dat hij een IMAP server gebruikt om de PM's als echte emailtjes op te slaan en te versturen, of een HTTP webservice o.i.d. Dat zou slechts een kwestie zijn van een andere mapper-klasse gebruiken, je hoeft dan je model & de rest van je code amper aan te passen.

Voor je views kan je een template parser gebruiken, hoeft op zich niet. Je moet er gewoon voor zorgen dat er geen wijzigingen & data ophalen in de view gebeuren. Binnen de view alleen logica die verantwoordelijk is voor de presentatie van de data. Het maakt verder niet uit of het een template-parser is, of een aparte klasse die er een RSS feed van maakt via DOM. Ikzelf heb gewoon een kleine klasse die middels include & extract een PHP bestand inlaadt waarin je dan gewoon heel simpel echo $var kan doen. Wel zo simpel, zolang je jezelf in bedwang kan houden en niet de verkeerde logica op de verkeerde plek zet. Logica in je view kan je niet voorkomen (of je gaat heel omslachtig te werk) want je zal altijd lussen en if/else-statements nodig hebben.
 
Joren de Wit

Joren de Wit

08/06/2008 22:33:00
Quote Anchor link
Jelmer, hoe zou jij het creëren/versturen van een PM in dit geval aanpakken?

Even uitgaande van een database is het versturen van een PM niets meer dan een nieuw record in een bepaalde tabel opslaan. Je zou er dus voor kunnen kiezen om de PM 'zichzelf' te laten versturen via een method zonder parameters in de PM klasse. Of zou je deze methode ook in de PMMapper klasse onderbrengen waarbij je de betreffende instantie van PM als parameter meegeeft?
 
Jelmer -

Jelmer -

08/06/2008 22:48:00
Quote Anchor link
Ik zou het in de Mapper klasse onderbrengen, omdat de PM slechts zichzelf representeert, en zelf geen kennis heeft van wat er allemaal met hem gedaan kan worden.

Ik had vroeger altijd een link naar een instantie van de Mapper in de Model zitten, zodat je [Model]->save() kon doen. Maar ik gebruik nu gewoon [Mapper]->save([Model]) en dat is eigenlijk veel gemakkelijker dan [Model]->save() omdat je exact weet met welke mapper je te maken hebt, en er geen magic nodig is om de mapper in de model te krijgen.


Wat twijfelachtig zijn relaties. Stel dat een PM een ontvanger-property heeft, een User dus. Dan zou je een method kunnen maken die de bijbehorende instantie van het User-model teruggeeft (wel zo logisch) maar hoe moet het dan met mapper voor het user-model? Moet het PM-model een instantie hebben of opvragen van de User-mapper, of gebruik je een Registery-klasse die daarvoor zorgt? Of laat je de PM-mapper vanzelf de joins regelen zodat hij ook meteen de user ophaalt (waardoor je dus het User-model & het PM-model gaat mixen) Ik ben er nog niet helemaal uit, maar gebruik meestal de manier dat het PM-model via een registery of iets vergelijkbaars aan de User-mapper kan komen, en daar de User-instantie vandaan kan toveren. Het voordeel is dat alle User-model gerelateerde acties door de mapper gaan, en bij wijzigingen ik alleen deze hoef aan te passen, en het gemakkelijk is om hier dingen te optimaliseren en caches toe te voegen. Nadeel is dat het lastiger is om gebruik te maken van JOINS en de voordelen van een lekker ingewikkelde SQL query. Daar moet je dus een beetje afwegen.
 
Jelmer -

Jelmer -

08/06/2008 22:48:00
Quote Anchor link
... 2 ...
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Jelmer -

Jelmer -

08/06/2008 22:48:00
Quote Anchor link
en 3
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Citroen Anoniem Graag

Citroen Anoniem Graag

27/06/2008 15:45:00
Quote Anchor link
19 dagen later,

Het idee is blijven liggen maar ik heb nu weer even tijd.

Hoe ik het nu in gedachten heb:
PMMapper
- aObjectenPm

+ __construct(PDO $oDb, $oGebruiker)
+ lijst($sMap = 'inbox') //outbox, prullebak
+ delete ($iId)
+ bekijken ($iId)
+ nieuw ($iNaar, $sOnderwerp, $sBericht)
// eventueel nog wat functies om bijv Gelezen weer op ongelezen te zetten

PM
- id
- van_id
- naar_id
- bericht
- onderwerp
- tijd
- status //ongelezen, gelezen, prullebak

+ __get($sVariabel, $mValue)
+ __set($sVariabel)

Zou dit een mooie opzet zijn? Tips? Iets veranderen?
Gewijzigd op 01/01/1970 01:00:00 door Citroen Anoniem Graag
 
Jelmer -

Jelmer -

27/06/2008 23:46:00
Quote Anchor link
Persoonlijk zou ik ze iets meer verweven, en iets algemenere maken:

PMMapper:
- (intern misschien iets van een soort cache-array)
- PDO $resource

+ __construct(PDO $resource)
+ getMessages($folder = 'inbox')
+ getMessageById($id)
+ getMessageOfUser(User $user)
+ put(PM $message)

en PM:
- id
- sender_id
- receiver_id
- subject
- message
- timestamp
- status

+ __construct(User $sender, User $reciever)
+ timestamp() -> geeft DateTime terug bijv.
+ receiver() -> geeft User object terug
+ sender() -> idem.
+ message()
+ setMessage($message)
+ markRead()
+ markDeleted()


Opslaan (en invoegen) gaat dan via $mapper->put(new PM(...)); (uiteraard stel je PM eerst in). Ik gebruik graag getters & setters omdat je dan objecten zoals DateTime achteraf kan aanmaken op basis van dat wat je vers uit de database hebt getrokken, en maak je dus alleen de objecten aan wanneer je ze ook werkelijk gebruikt. Daarnaast heb ik ze het liefst gewoon simpel in aparte methods, zodat je bij het maken van callbacks en andere situaties waar je de functienaam moet opgeven geen ingewikkelde constructies hoeft te maken.

Trouwens, is het handig om deleted als status in plaats van als map te definiëren? Het is nu onmogelijk om ongelezen berichten te hebben in je prullenmand :)
 
Jelmer -

Jelmer -

27/06/2008 23:46:00
Quote Anchor link
... en 2 ...
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Jelmer -

Jelmer -

27/06/2008 23:46:00
Quote Anchor link
en 3
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.