[OOP] CRUD method's

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software programmeur

Functieomschrijving Voor een uitdagende werkgever in regio Breda zijn wij op zoek naar een Full Stack C#.NET programmeur. Je bent verantwoordelijk voor het ontwikkelen van apps, webapplicaties en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines te scannen en vervolgens de data om te zetten in management informatie voor de klanten. Taken en verantwoordelijkheden: Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks, HTML, TypeScript, SQL & C++, CSS. Geen ervaring met één van deze technologieën is dan ook geen enkel probleem! Deze werkgever biedt

Bekijk vacature »

Dynamics Ontwikkelaar

Dit ga je doen Ontwikkelen van Dynamics 365 voor de interne uitrol; Samen met de consultants sparren met klanten over de wensen en eisen; Ontwikkelen van Dynamics 365 voor verschillende grote klanten; Technische analyse en testen; Meedenken over het gebruik en de richting van Dynamics binnen de organisatie. Hier ga je werken Onze opdrachtgever, gevestigd in regio Eindhoven, levert een compleet dienstenpakket op het gebied van IT. Zij pakken verschillende (complexe) vraagstukken van grote organisaties op. De sfeer intern is gezellig en informeel. Men houdt van hard werken maar gezelligheid door middel van een borrel of gezamenlijke lunch komt er

Bekijk vacature »

Java Developer bij een jonge groeiende organisatie

Bedrijfsomschrijving Vind jij het als Java developer ook zo belangrijk dat een bedrijf je de ruimte en tijd geeft voor persoonlijke ontwikkeling? Dan zit je hier helemaal goed. Deze jonge organisatie is opgericht in 2018 en is ondertussen uitgegroeid tot een club van ongeveer 30 medewerkers. Het gaat hier om een echte Java club, die vrijheid en verantwoordelijkheid erg belangrijk vinden. Het bedrijf heeft een informele sfeer en de teams zijn erg hecht met elkaar. Ze delen graag de kennis en ervaringen met anderen, maar vinden andermans mening ook zeer belangrijk. De organisatie zet zich in voor ontwikkeling en besteed

Bekijk vacature »

Senior Java Developer

Als Senior Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en

Bekijk vacature »

Oracle Apex developer

Bedrijfsomschrijving My client is a technology company based in Den Bosch, the Netherlands. They specialize in providing innovative software solutions to clients, and they are currently looking for an experienced Oracle Apex developer to join the IT team. Functieomschrijving As an Oracle Apex developer, you will be responsible for designing, developing, and maintaining web-based applications using Oracle Apex. You will work closely with project managers, business analysts, and other developers to ensure that clients' needs are met and that the software solutions are of the highest quality. Responsibilities: Design, develop, and maintain Oracle Apex applications. Work with project managers and

Bekijk vacature »

Fullstack Developer

Functieomschrijving Voor een erkende werkgever in regio Etten-Leur zijn wij op zoek naar een Fullstack Developer met PHP/Laravel ervaring. Je gaat aan de slag met het bouwen van maatwerk software voor klanten die actief zijn in een specifieke markt. Als fullstack developer ben je samen met een enthousiast team van 7 collega’s verantwoordelijk voor de ontwikkeling, beheer en innovatie van informatiesystemen voor klanten in een specifieke branche. Verder ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Ervaring met Laravel is een must. Om de klant zo goed mogelijk te

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 »

Ervaren Full-Stack PHP Developer

Functieomschrijving Gezocht! Ervaren PHP Developer! Voor een organisatie in de regio Harderwijk zoeken wij een ervaren PHP Developer die het IT team van dit bedrijf gaat versterken. We zijn op zoek naar een enthousiaste en breed georiënteerde IT-er die het innovatieve bedrijf nog een stap verder kan brengen. Voor deze functie zoeken wij iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je werkt samen met een externe ontwikkelpartij en kunt hun dus uitdagen op het geleverde werk. Het schrijven van concepten aan de AI en hardware kant valt onder je verantwoordelijkheden. Het bedrijf noemt zichzelf een

Bekijk vacature »

Starter/junior Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als starter/junior developer zul je direct begeleid worden door een senior uit het team. Het is van belang dat

Bekijk vacature »

Mendix Developer

Voor Troostwijk Groep zoeken wij een: Mendix Developer Wij zoeken Je bent een getalenteerde en ervaren Mendix Developer en het is tijd om je horizon te verbreden. Je wilt minder coderen en meer modelleren, minder bezig zijn met allerlei technische details en randvoorwaarden en meer met functionaliteit. Daarnaast ben je trots op de innovatieve en gebruiksvriendelijke applicaties die je in de loop van de jaren hebt gebouwd. Werk je graag in een enthousiast team, wil je veel vrijheid en kun je tegelijkertijd goed met deadlines omgaan, dan ben jij absoluut degene die wij zoeken! Wat je nodig hebt is ruime

Bekijk vacature »

IT Manager team PaaS

TenneT is hard groeiende om haar 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 Lead PaaS die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je wordt de Teammanager (Lead) van een nieuw team binnen de afdeling Basic van Information Technology and Facilities (ITF) van TenneT. Het team heet Platform as a Service. Hier wordt elke dag in een goede sfeer met zijn allen hard gewerkt om vanuit IT

Bekijk vacature »

.NET Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een .NET Developer! Wil jij werken voor een internationaal bedrijf waar je legio mogelijkheden krijgt als Software Ontwikkelaar? Grijp nu je kans en kijk snel of jouw vaardigheden aansluiten bij onderstaand profiel! Je kunt een uitdagende rol gaan vervullen als .NET Developer binnen een internationaal bedrijf dat gevestigd is in omgeving Bergen. Dit bedrijf is zeer vooruitstrevend en verricht betekenisvol werk. Binnen dit bedrijf wordt gewerkt aan de productie en ontwikkeling van medische middelen. Als .NET Developer ga jij je bezig houden met het volgende: Je wordt betrokken bij alle fasen van software

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Grafisch vormgever

Standplaats: Maasland Aantal uren: 32 – 40 uur per week Opleidingsniveau: HBO werk- en denkniveau Ben jij een ambitieuze grafisch vormgever met een passie voor creativiteit en oog voor detail? Vind jij het daarnaast leuk om ook marketingactiviteiten op te pakken? Dan zijn wij op zoek naar jou! Bedrijfsinformatie Westacc Group BV is het zusterbedrijf van HABA en specialiseert zich in (maatwerk) oplossingen voor (elektro) techniek en verlichting in de kampeerbranche. Zij produceren en assembleren onderdelen voor caravans, campers en boten. Voor een groot aantal caravan- en campermerken leveren wij producten als zekeringkasten, invoerdozen, acculaders, schakelmateriaal en verlichting. De producten

Bekijk vacature »

C# .NET developer voor innovatieve applicaties gez

Bedrijfsomschrijving Deze werkgever houdt zich al ruim 20 jaar bezig met het ontwikkelen van innovatieve software en dat willen ze graag nog lang doorzetten. En dat merk je ook als je als .NET developer hier aan de slag gaat. De applicaties worden continu doorontwikkeld met altijd als uitgangspunt dat zowel de kwaliteit als het gebruikersgemak van hoog niveau is. Het bedrijf telt inmiddels ruim 25 medewerkers waarvan meer dan de helft op de development afdeling werken. Meer weten over deze werkgever? Mail naar [email protected] of bel 0657578548 Functieomschrijving Je komt te werken in een Scrum team met andere .NET developers

Bekijk vacature »

Pagina: « vorige 1 2

Wouter J

Wouter J

09/02/2014 21:57:44
Quote Anchor link
De DataMapper maakt een object aan die die teruggeeft, bedoelde je dat met "door sturen naar waar ik het nodig heb"?

En het mooie is, met dit design is je datamapper een repository geworden. Hij interact niet meteen met de database, maar met de layer die met de database interact: http://code.tutsplus.com/tutorials/the-repository-design-pattern--net-35804
 
PHP hulp

PHP hulp

16/04/2024 09:06:55
 
Milo S

Milo S

09/02/2014 22:02:41
Quote Anchor link
Ja, dat is precies wat ik bedoel. Raad jij trouwens aan om dan ook een soort van container method te maken? Voor als je met een UserMapper zit je ook meerdere gebruikers kunt selecteren.

Oh God, het beestje heeft een naampje! Ik ga kijken!
 
Wouter J

Wouter J

09/02/2014 22:13:53
Quote Anchor link
Het mooie van een UserMapper is juist dat het ook meerdere objecten kan selecteren van hetzelfde type. Een methode als findAll zal dan een array terug geven van die onjecten.
 
Milo S

Milo S

10/02/2014 08:47:40
Quote Anchor link
Ik moet nu helaas op weg naar mijn andere hobby / werk dus kan niets proberen / schematisch neerknallen, maar ik ga vanavond wat proberen en de uitkomst laat ik zeker weten. Ben namelijk altijd opzoek naar verbeterpunten.

Offtopic:
Iemand enig idee waarom ik continue op alle verschillende mediums opnieuw in moet loggen?


Toevoeging op 10/02/2014 18:18:41:
Hmm na enige discussies met mijzelf ben ik hierop gekomen. Ik zat vooral met of ik nu wel of niet een extra method moest maken voor bijvoorbeeld gebruiker ophalen met het ID. Gekozen voor wel.

Class: UserMapper
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
public function getAll( $aColumns )
{

    $sColumns = implode(', ', $aColumns);
    
    $sql = "SELECT
                "
.$sColumns."
            FROM
                "
.$this->table;    
    
    # DatabaseStorage aanroepen
    $DatabaseStorage = new DatabaseStorage($db);
            
    # Alle ophalen
    $UserData = $DatabaseStorage->read( $sql );
    
    # User objecten maken
    foreach( $UserData as $User )
    {

        $User = new User( $User[$aColumns[0]], $User[$aColumns[1]], $User[$aColumns[2]], $User[$aColumns[3]], $User[$aColumns[4]], $User[$aColumns[5]] );
    }

    
return 'Gelukt? Ja of Nee.';
}

?>


Class: DatabaseStorage
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
public function read( $sql )
{
        
    # Query Interpreteren en Controleren door Database
    $stmt = $this->db->prepare($sql);
    
    # Query Uitvoeren
    $stmt->execute();
    
    # Result Opvangen en Retouneren
    return $result = $stmt->fetch(PDO::FETCH_ASSOC);
}


?>


Aanroepen van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
# UserMapper aanroepen
$UserMapper = new UserMapper($db);

$aColumns = array ( 'username', 'password', 'name', 'email', 'phone' );

# Alle gebruikers ophalen
$User = $UserMapper->getAll($aColumns);


In theorie moet dit verhaal werken, ik heb het nog niet geprobeerd, ga ik nu doen! Maar ik zit sowieso met het feit dat niet direct zie welke waardes ik waar in het User object stop. Dat kan natuurlijk ongelooflijk de verkeerde kant op gaan?

Wat erg apart is, dat hij nu bij het testen blijft zeuren over dat de variable $db niet is gedefinieerd. Punt is, dat is hij wel...
Gewijzigd op 10/02/2014 18:39:37 door Milo S
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/02/2014 19:14:23
Quote Anchor link
$this->db wellicht?
 
Milo S

Milo S

10/02/2014 22:01:01
Quote Anchor link
Gek genoeg had ik dat dus in mijn code al opgemerkt en aangepast...

Inmiddels werkt het, behalve het db gebeuren, maar daar kijken we morgen wel naar. Wat ik wel ook nog wil vragen is of dat dit wat ik morgen even erbij zet iets is wat jullie zouden doen?

En foutafhandeling / bevestiging van goedkeuring hoe kun je dat het beste aanpakken. Ik zou natuurlijk een aparte ExceptionHandler bouwen waarmee ik beide dmv numerieke waardes op een gewenste manier kan tonen? Klinkt dat als wenselijk voor jullie? Of denken jullie erheel anders over
Gewijzigd op 10/02/2014 23:09:36 door Milo S
 
Wouter J

Wouter J

10/02/2014 23:24:19
Quote Anchor link
Naar mijn idee zijn er een paar dingen mis met je huidige DataMapper:

Er is maar 1 klasse (1 plek eigenlijk) in je hele code die weet hoe de user database tabel en het User object aan elkaar gekoppeld zijn. Sterker nog, er is maar 1 klasse die überhaupt weet dat het User object in een database tabel wordt opgeslagen.
De rest van de objecten weet of alleen dat er een user database tabel is en welke waardes die bevat of dat er een User object is en hoe je die gebruikt (let op, alleen een factory weet hoe je een User object aanmaakt). De grote meerderheid zou niks van de database af weten, eigenlijk weet alleen de DatabaseStorage klasse daar vanaf.

In jouw UserMapper heb je een getAll method die kolommen accepteert. Die moet dus door een ander object worden aangeroepen met de database kolommen. Nu heb jij dus een willekeurig ander object die ineens de kolommen weet en je hebt een UserMapper die die kolommen niet weet. Dat is een beetje vaag, vind je ook niet?

Deze UserMapper maakt zelf zijn DatabaseStorage klasse aan. Hier zijn 2 grote problemen mee:
- Je bent alle flexibiliteit kwijt. Wanneer je van database naar file wil veranderen moet je je klassen niet hoeven aanpassen. In jouw geval moet je alle DataMapper klassen aanpassen.
- Per DataMapper wordt er weer een nieuwe DatabaseStorage aangemaakt, 1tje zou veel beter zijn, niet?

Wat je dus doet is de Storage klasse buiten de DataMapper aanmaken en die vervolgens meegeven aan de DataMapper's constructor (ipv $db).

Dan nog een naam dingetje, ->find of ->findAll is wat gebruikelijker dan ->get en ->getAll in DataMappers. Maar dit kan natuurlijk ook volkomen persoonlijke smaak zijn.
 
Milo S

Milo S

11/02/2014 08:55:54
Quote Anchor link
Ik heb de DatabaseStorage nu buiten de DataMapper aan laten maken, maar vraag me af of ik begrijp wat je bedoeld met het aanpassen van alle DataMappers.

Om dat te voorkomen moet ik dus de SQL String gewoon aanmaken bij de pagina die wordt getoont. Op deze manier gaat er een query mee naar de DataMapper getAll method zodat die daarna alles op kan vragen aan de databaseStorage.
Op deze manier kan ik heel makkelijk zeggen ik wil geen databaseStorage meer maar bijvoorbeeld txtStorage. Ik hoef dan alleen maar een andere storage classe mee te geven bij het oproepen?

Correct? Duidelijk Verwoord?

Class UserMapper
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
public function __construct( $Storage )
{

    $this->storage = $Storage;
}

public function getAll( $sql )
{
                
    # Data opvragen uit storage
    $UserData = $this->storage->read( $sql );        
    
    # Result Opvangen en in User object plaatsen
    for( $i = 0; $i <= ( count( $UserData ) - 1); $i++ )
    {

        $User[] = new User( $UserData[$i]['id'], $UserData[$i]['username'], $UserData[$i]['name'], $UserData[$i]['phone'], $UserData[$i]['email'] );
    }

        
# Array retouneren
return $User;
}

?>


Class DatabaseStorage
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
public function read( $sql )
{
        
    # Query Interpreteren en Controleren door Database
    $stmt = $this->db->prepare($sql);
    
    # Query Uitvoeren
    $stmt->execute();
    
    # Result Opvangen en Retouneren
    while( $result = $stmt->fetch( PDO::FETCH_ASSOC ) )
    {

        $res[] = $result;    
    }

    
return $res;
}

?>
Gewijzigd op 11/02/2014 08:57:02 door Milo S
 
Milo S

Milo S

12/02/2014 19:26:27
Quote Anchor link
Inmiddels is het mij ook gelukt om data toe te voegen via de huidige gedachtegang en draait eigenlijk alles wel soepel.
Ik kom er alleen wel achter dat ik steeds minder methods nodig heb.

Alles wat ik nu nog heb is een save, findById, FindAll method in mijn Mappers en create, read, update en delete in mijn Storage class. En zelf daar zou eigenlijk de update weg kunnen, hij is namelijk praktisch hetzelfde als create.

Wat denken jullie ervan?
 
Wouter J

Wouter J

12/02/2014 19:43:14
Quote Anchor link
Nou, je begrijp er nog niet veel van (wat betreft het query verhaal). Nu moet een klasse buiten de DataMapper dus een query gaan maken. Dat betekend dat de klasse buiten de DataMapper moet weten in welke tabel het User object zich bevindt en wat voor kolommen deze tabel heeft. Dat is allemaal de taak van de DataMapper. Maak een query in de datamapper en geef die door aan de DatabaseStorage. Op die manier kun je makkelijk die DatabaseStorage veranderen in een FileStorage, door alleen de DataMapper aan te passen.

En je bent type hinting vergeten voor Storage.
Gewijzigd op 12/02/2014 19:43:40 door Wouter J
 
Milo S

Milo S

12/02/2014 22:12:50
Quote Anchor link
Maar verrek dat had ik?

Ik ga het even op een rij zetten voordat ik weer heel enthousiast ga programmeren... Ik baseer het verhaal even op het gebruikersgedeelte. Hiermee kan ik dan het principe onder de knie krijgen om dan vervolgens de rest aan te pakken.

UserMapper
- create( $_POST )
- getAll()
- getById( $iId )
- update( $_POST )
- delete()
- populate()

In de eerste 5 methods wordt een query gemaakt. De Query wordt doorgestuurd naar de DatabaseStorage. Mocht ik dan een FileStorage willen, dan maak ik een nieuwe UserMaper of pas ik deze aan zodat hij de juiste gegevens stuurt naar de FileStorage.
In mijn getAll & getById methods roep ik een populate / factory (hoe je het ook noemen wilt) method aan om het user object aan te maken zodat ik deze uiteindelijk kan retourneren naar de pagina waarop ik het weergeven wil.

DatabaseStorage
- save( $sSql )
- read( $sSql )
- delete( $sSql )

De DatabaseStorage ontvangt de SQL code van de Usermapper. Hij voert de code uit en retourneert het naar de UserMapper.
Ik ben het alleen niet zo eens met een gescheiden save method, dus ene create en update apart. Het doet werkelijk precies hetzelfde. Vandaar dat ik er voor kies om een save method te gebruiken voor beide.

Zeg me alstublieft dat ik het dan nu eindelijk door heb...
Gewijzigd op 12/02/2014 22:31:52 door Milo S
 
Wouter J

Wouter J

12/02/2014 22:35:01
Quote Anchor link
Ja, dat klopt :) Je code voorbeeld toonde: public function getAll( $sql ) in de usermapper. Dat was dus verkeerd, wat je hierboven schreef is correct!
 
Milo S

Milo S

12/02/2014 23:03:10
Quote Anchor link
God dank haha! Ik heb je niet een na laatste post maar die daarvoor geloof ik wel 20 keer gelezen en ik maar niet begrijpen wat je nu bedoelde. Ben superblij dat het nu eindelijk iets gaat worden haha.
 

Pagina: « vorige 1 2



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.