[OOP] CRUD method's

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior PHP programmeur

Bedrijfsinfo De core-business van het bedrijf het maken van verfrissende online bedrijfs-software, bedoeld om het administratieve stuk uit handen te nemen bij de klanten. Hier is het bedrijf ook al 10 jaar mee bezig. Deze groeiende organisatie bestaat op dit moment uit 22 werknemers waarvan 6 developers. Door de aannemende aanvragen van diverse klanten is er versterking nodig in dit hechte team. De toegenomen groei komt vooral dat er eerst de basis wordt gelegd voor de klant. Het kantoor is verdeeld in 2 ruimtes; 1 ruimte bestaat uit de afdeling support en sales. De andere afdeling is de IT afdeling

Bekijk vacature »

Maatschappelijk verantwoord Medior C# developer ge

Voor een maatschappelijk verantwoord organisatie ben ik per direct op zoek naar een Maatschappelijk verantwoord Medior C# developer die enorm ambitieus is en doelbewust wil werken bij een organisatie dat zich bezig houdt met duurzaamheid. Deze organisatie is enorm aan het groeien. Dit bedrijf telt ongeveer 60 medewerkers waarvan er 10 mensen werken in de IT afdeling. Alles binnen deze organisatie is open en maakbaar. Je gaat werken bij een informele organisatie en als ontwikkelaar krijg je meer dan voldoende vrijheid om te doen waar je goed in bent. Functie: Als software developer ga je aan de slag binnen de

Bekijk vacature »

PHP Developer / Marketing Intelligence

Organisatie Wil jij aan de slag in een toonaangevend bedrijf op het gebied van online marketing om mee te bouwen aan een high tech systeem op het gebied van online marketing? Hecht je waarde aan een informele cultuur en wil je daarin klaargestoomd worden tot top developer? Wil je graag werken in een prachtig pand te centrum Amsterdam? Reageer dan snel! Deze volwassen organisatie is al lange tijd een van de marktleiders in de online marketing branche. Omdat er in Nederland zo’n 4500 andere organisaties zijn waarmee ze concurreren dachten ze: Dat kan anders! In plaats van de online marketing

Bekijk vacature »

Software Developer

High Voltage Europa B.V. (HVE) is gespecialiseerd in de ontwikkeling en fabricage van apparatuur op basis van ionen- en elektronenbundeltechnologie en is de grootste en meest diverse fabrikant van deeltjesversnellers voor wetenschap en industrie. Naast deeltjesversnellers vervaardigt HVE ook subassemblages voor halfgeleider-ionenimplantatiesystemen. Onderzoek en ontwikkeling (R & D) speelt een centrale rol bij HVE! HVE is gehuisvest in een moderne, goed uitgeruste faciliteit van 10.000 m² in Amersfoort. De faciliteit, nieuw gebouwd in 1987 en uitgebreid in 1996, bestaat uit een grote centrale hal met kantoren op twee niveaus aan de voorzijde en gespecialiseerde werkplaatsen langs beide zijden. Sinds 2009

Bekijk vacature »

Junior backend PHP developer

Werk jij graag voor Nederlands meest bekeken televisie zenders? Wil jij graag een groot netwerk in de mediabranche opbouwen? Werk jij graag met de nieuwste technieken werken om ervoor te zorgen dat deze high traffic websites goed functioneren? Organisatie Altijd al willen werken voor de gaafste televisie programma’s? Werk je graag in een gezellig drukke omgeving, met een jong team aan de gaafste websites van Nederland die iedereen kent van televisie! Dan zit je op het Mediapark in Hilversum goed bij deze tv zender! Deze televisie zender is een van de meest bekeken kanalen op de Nederlandse televisie. Werken bij

Bekijk vacature »

B2B Integration Team Lead

The B2B Integration Team Lead will build, support, train and lead a team of B2B developers and analysts. He or she will work closely with cross-functional business partners to meet business objectives and deliver IT commitments. In addition, the B2B Integration Team Lead will oversee a variety of areas within the functional scope of the role, such as architecture, product development, quality assurance and delivery of services, having full ownership of the entire B2B landscape. This is a full-time position based in our European headquarters in Arnhem, the Netherlands. Activities: Recommend the appropriate B2B integration solutions designed to meet the

Bekijk vacature »

Drupal developer SaaS oplossingen

Organisatie Direct bij binnenkomst word je gegroet door baliemedewerkster. Jij loopt voorbij de twee StarWars figuren door naar de tweede verdieping. Samen met 23 andere ontwikkelaars is dit gezellige, ruime en lichte plekje jullie afdeling. Verdeeld over 5 scrumteams bestaande uit backend developers, een front-end developer en een tester. Als marktleider helpen zij gemeenten, provincies en waterschappen bijvoorbeeld met de website, social intranet, online formulieren en digitaal vergaderen. Hier worden grote, toffe en complexe SaaS oplossingen gebouwd. Dit doen zij met ruim 70 bevlogen medewerkers die iedere dag met elkaar en samen met hun klanten hard werken om dit voor

Bekijk vacature »

Medior Full Stack Java of C# Developer

Profit4Cloud, (www.profit4cloud.nl) nu met 50 collega's en vestigingen in Amsterdam, Utrecht, Apeldoorn, Eindhoven en Hengelo, zoekt Medior Full Stack Java of C# Developers. Wij werken aan projecten voor TOP-spelers in Banking, Finance, Industrie of Overheid in West-, Midden- en Oost-Nederland. Ben jij die Full Stack Developer die enthousiast wordt van state-of-the-art ontwikkeling voor toonaangevende klanten? Dan is Profit4Cloud jouw 'place to be'! Wat bieden wij jou als Medior Full Stack Java of C# Developer? Profit4Cloud heeft de beste arbeidsvoorwaarden voor de beste professionals! Zo doen we altijd een op maat gemaakte aanbieding doen en bieden wij je in ieder geval:

Bekijk vacature »

New Business Developer

New Business Developer Wat ga je doen? Je dag start je met het controleren van de nieuwe leads, zijn er nog urgente vragen binnen gekomen? Ja? Dan pak je dit uiteraard op, wie weet leidt deze vraag wel tot een nieuwe klant! Vervolgens controleer je de afspraken die je voor die dag hebt staan. Vandaag is je eerste afspraak pas om 10:00, dat geeft je de tijd om nog een aantal telefoontjes te plegen voor je de auto in stapt. Op naar je eerste afspraak van de dag. Elke afspraak is voor jou telkens weer een nieuwe kans om de

Bekijk vacature »

Medior .NET developer Utrecht

Wil jij werken op de mooiste locatie van de Utrechtse Heuvelrug? Wordt je beperkt in je huidige werk en wil je op zoek naar die baan met veel vrijheid? En wil je werken met een leuke club ontwikkelaars die passie hebben voor het werk wat ze doen? Dan ben ik op zoek naar jou! Organisatie: Deze organisatie is gelegen, zoals de titel al vermeld, midden in de Utrechtse Heuvelrug. Lekker wandelen in de pauze, of een wild zwijn spotten vanaf je eigen bureau? Alles is hier mogelijk! Met 20 man sterk kan deze organisatie als klein & informeel worden beschouwd,

Bekijk vacature »

Junior .NET Developer

Organisatie Leef jij voor muziek, heb je minimaal één jaar ervaring als .NET developer en ben je toe aan een nieuwe uitdaging omgeving Oss? Deze toonaangevende organisatie met ruim 15 jaar ervaring in de muziekbranche is klaar voor de internationale stap en zoekt daarom een ambitieuze webdeveloper. Het bedrijf zit gevestigd in Oss maar heeft wegens succes ook ambities wereldwijd te gaan, te starten in Australië, Engeland, Duitsland en binnenkort Amerika. Wanneer je in contact staat met dit bedrijf merk je dat er één gemeenschappelijke bindende factor is: Iedereen houdt onwijs veel van muziek. In het jonge team is dan

Bekijk vacature »

Oracle Apex Ontwikkelaar

Wat je gaat doen: Als Oracle Ontwikkelaar werk je zowel zelfstandig als in teamverband aan het ontwikkelen en ontwerpen van software componenten. Je levert een bijdrage aan de ontwikkeling tot en met de implementatie. Je bent in staat om informatie te verzamelen,te analyseren en te documenteren van wensen en eisen van de eindgebruikers. Je bent in staat om functionele vereisten te vertalen naar technische specificaties, ontwikkelt web applicaties met behulp van Oracle Applicatie Express, door de veranderingen en ontwikkelingen van web formulieren en rapporten. Verbeteren van bestaande Oracle Apex Systemen. Ontwikkelen en veranderen van Oracle 11g database schema’s. Schrijven van

Bekijk vacature »

Medior .NET Developer

Ben jij een C#.NET specialist, vind je het geweldig om zowel op strategisch als op uitvoerend niveau nieuwe ontwikkelingen te realiseren binnen de medische wereld? Wil jij daadwerkelijk met jouw werk iets bijdragen aan de maatschappij en hierdoor mensenlevens redden? Organisatie Ruim 15 jaar geleden is de organisatie opgericht en deze is gevestigd in regio Oss. Zij zijn specialist binnen hun vakgebied en worden door de grootste spelers op de markt benaderd voor de soft- en hardware die ze maken. Met een hechte groep collega’s heeft deze organisatie met hun producten bewezen dat zij een innovatieve speler zijn in de

Bekijk vacature »

Junior backend developer

Jouw functie: Junior / Medior Developer Wil jij graag werken met de nieuwste tech-stack met technieken als NodeJS, Angular2 en ElasticSearch? Schrijf jij graag schaalbare en goed onderhoudbare code en wil jij werken met automated testing en continious integration? Wil jij ervaring opdoen op een hightraffic platform waar je met veel data gaat werken? Wil jij begeleid worden door een aantal ervaren mentoren? Organisatie Opgericht vanuit het oogpunt de wereld een betere plek te maken en onze volgende generaties ook van de wereld te kunnen laten genieten is deze startup enkele jaren geleden opgericht. Dit online platform zorgt ervoor dat

Bekijk vacature »

Full-stack .NET developer

Organisatie Deze organisatie is gevestigd in de omgeving van Tilburg. Deze organisatie is een puur software huis voor developers, door developers. Er werken momenteel 10 personen en dit zijn allemaal developers! In 2010 is deze organisatie opgericht. Het is opgericht door twee heren die beide jarenlange ervaring als software developer hebben opgedaan. Beide directeuren programmeren nog 100% mee, simpelweg omdat dit hun passie is. Vanwege hun ervaring en kennis zijn ze een perfecte sparringpartnerspartners voor de developers. Er heerst een totale anarchie waar iedereen gelijk is in de vorm van een informele werkomgeving. Deze organisatie ontwikkeld maatwerksoftware voor diverse grote

Bekijk vacature »

Pagina: 1 2 volgende »

Milo S

Milo S

07/02/2014 15:38:08
Quote Anchor link
Hallo Allemaal,

Zijn we weer terwijl ik werkelijk geen steek verder gekomen ben. Dat komt hoogstwaarschijnlijk omdat ik blijf denken over hoe ik nu alles het beste kan doen. Bedoel het werkt nu allemaal wel en dat is fijn, maar het is niet zoals ik wil.

Ik zou namelijk mijn data op willen slaan via bijvoorbeeld een UserMapper naar een DatabaseStorage de database in. Het klinkt allemaal romantischer dan het is, vooral het lezen. Voornamelijk omdat je zo ongelovelijk veel functies hebt. Neem bijvoorbeeld gewoon een MySql database, ik wil wel gebruik kunnen maken van een eventuele JOIN of DATE functie binnen SQL. Het schrijven en dergelijke lukt me nog wel om een array van te maken en uit te laten voeren. Ik heb alleen geen enkel idee voor de lees functie.

Wat ik nu gebruik
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
26
27
28
29
<?php
public function read($table, $columns, $id)
{

    $columns = implode(', ', $columns);
    
    # Query
    $sql = "SELECT ".$columns." FROM ".$table;
    
    # Als er een ID is
    if( $id != NULL )
    {

        $sql .= " WHERE id = '".$id;
    }

    
    # Query Interpreteren en Controleren door Database
    $stmt = $this->db->prepare($sql);
    
    # Query Uitvoeren
    $stmt->execute(array((int) $id));
    
    # Result Opvangen en Retouneren d.m.v populate function
    while ($result = $stmt->fetch(PDO::FETCH_ASSOC))
    {

        $data[] = $result;
    }

    
return $data;
}

?>


Zoals je ziet kan ik dan alleen niet JOINEN. Moet ik het zoeken bij een multidimensionale array? Moet ik meerdere methods gaan maken welke dan bijvoorbeeld de MySql functies representeren? Waar zit jullie gedachte hierbij? Dat laatste haalt alleen ook weer functionaliteit weg lijkt mij?

Vind het lastige keuzes waar ik al tijden mee aan het stoeien ben.
 
PHP hulp

PHP hulp

25/04/2019 20:54:15
Honeypot
 
Erwin H

Erwin H

07/02/2014 16:08:18
Quote Anchor link
Bedenk dat deze ene method nu alweer twee dingen aan het doen is: query maken en query uitvoeren. Trek dat als eerste uit elkaar. De methode (of zelfs class) die de query uitvoert moet op geen enkele wijze aan die query gaan lopen knoeien. Het enige dat die class doet is uitvoeren en resultaten teruggeven.

Vervolgens kan je je afvragen wat het nut is van een algemene class/methode die op basis van algemene instructies een query opbouwt. Uiteindelijk is elke query nog altijd uniek (tot op zekere hogere aangezien je de SELECT * FROM tabel queries alleen bij beginners tegenkomt) en dus zal je linksom of rechtsom ergens in je code die query moeten opbouwen. Wil je dat via allerlei abstracte instructies, of gewoon direct in tekst? Ik heb altijd voor het laatste gekozen, dus gewoon uiteindelijk elke query in een string uitgeschreven in je code. In elk geval kan je altijd elke query bouwen en het maakt het allejezus veel makkelijker om het ook nog eens te testen.
Kies je voor de abstracte querybuilder ga je dan eens alle mogelijke verschillende opties voorstellen. Een klein voorbeeldje:
- aggregate functies
- joins
- joins met meerdere voorwaarden
- subqueries
- virtuele tabellen
- virtuele kolommen
- group concats
- having clause
- group by

Kan het? Ja vast, is je code dan nog leesbaar en is het sneller (wat code bouwen betreft), ik betwijfel het ten zeerste.
 
Wouter J

Wouter J

07/02/2014 16:18:30
Quote Anchor link
Of gebruik bijv. gewoon de Doctrine Query Builder.
 
Milo S

Milo S

07/02/2014 17:14:31
Quote Anchor link
Erwin, dat is inderdaad het probleem waar ik tegenaan loop. De onmogelijk vele mogelijkheden in een querie. Jij zegt dus eigenlijk dat ik mijn usermapper beter een query naar mijn storageclass kan laten sturen om dat resultaat op te halen. Zo houd ik namelijk de taken verdeeld. Maar aan de andere kant kan ik natuurlijk gewoon de query vanuit een string via PDO behandelen.
Ik denk nu even hardop en ga meteen zeggen dat dat weer niet goed is want dat zou betekenen dat bijvoorbeeld een read method 2 taken krijgt, wat dus eigenlijk niet de bedoeling is.

Wouter, ik heb momenteel het gevoel dat ik nog niet toe ben aan al het importeren van soort systemen. Ik ben nog lang niet bekwaam genoeg om ook dat te gaan begrijpen. Althans zo voel ik het.
Gewijzigd op 07/02/2014 17:27:54 door Milo S
 
Wouter J

Wouter J

07/02/2014 17:28:48
Quote Anchor link
Quote:
Ik ben nog lang niet bekwaam genoeg om ook dat te gaan begrijpen. Althans zo voel ik het.

Dan is het tijd van dat gevoel af te stappen. Je bent het wel! :)
Het gebruik van dat soort tools leert je juist hoe dit soort problemen worden opgelost.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/02/2014 21:11:09
Quote Anchor link
Ik denk dat elke query builder de beperkingen heeft die Erwin al aangeeft.
Ze worden ook het vaakst gebruikt door mensen die zelf geen query kunnen uitschrijven, en die komen dan in de problemen wanneer van het abstracte afgeweken moet worden.
 
Dos Moonen

Dos Moonen

07/02/2014 21:47:45
Quote Anchor link
Wouter J op 07/02/2014 17:28:48:
Quote:
Ik ben nog lang niet bekwaam genoeg om ook dat te gaan begrijpen. Althans zo voel ik het.

Dan is het tijd van dat gevoel af te stappen. Je bent het wel! :)
Het gebruik van dat soort tools leert je juist hoe dit soort problemen worden opgelost.

En mogelijk nog belangrijker, je leert door trial and error ook hoe/wanneer je tools niet moet gebruiken. Dat helpt in de toekomst weer de beste tool for the job te kiezen.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/02/2014 22:00:11
Quote Anchor link
Oké, maar als iemand mij uit kan leggen wat nu het voordeel is van een query builder....
 
Wouter J

Wouter J

07/02/2014 22:32:41
Quote Anchor link
Ik vind het zelf mooier :)

En de Doctrine qb heeft een oplossing voor het niet alles implementeren van query elementen. Je kan namelijk ook de ->add() functie gebruiken om een custom stukje in de query te stoppen.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/02/2014 22:50:45
Quote Anchor link
Een functie gebruiken om een string in een query te plaatsen?
Of tien functies aanroepen om één query te bouwen.
Nog steeds geen voordeel
 
Wouter J

Wouter J

07/02/2014 23:00:01
Quote Anchor link
Iedereen zijn eigen mening Ger...
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/02/2014 23:15:25
Quote Anchor link
Das wel heel erg makkelijk Wouter.
 
Milo S

Milo S

08/02/2014 11:33:13
Quote Anchor link
Als ik het zo lees is het natuurlijk het makkelijkst om te gaan voor wat Erwin al eerder voorstelde. Minder functies voor hetzelfde. Ik kan de query gewoon typen in een string zoals altijd gewend en klaar ermee.

Aan de andere kant wat ik zo zag van die Query Builder vindt ik dat er toch wel chiq uitzien.. Of het praktisch is weet ik zo net nog niet.

Vandaar dat ik het eerst eens gewoon ga proberen zoals Erwin voorstelde. Bij wijs van spreken kan ik altijd nog zeggen dat ik die Dictrine Query Builder wil, het is dan iets meer werk, maar ik heb dan het gevoel alsof het allemaal wat rustiger gaat.

Ik ga nu dus voor een DataMapper en in dit geval een DatabaseStorage. In de DataMapper heb ik mijn query die de resultaten door de DatabaseStorage laat ophalen en die in een array dumpt.

Bedankt voor alle adviezen jongens hier kan ik wat mee in mijn weg naar het onbekende...
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

08/02/2014 19:41:02
Quote Anchor link
Precies de reden waarom ik geen query builder gebruik:
Doctrine:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// $qb instanceof QueryBuilder

// example8: QueryBuilder port of: "SELECT u FROM User u WHERE u.id = ? OR u.nickname LIKE ? ORDER BY u.surname DESC" using Expr class

$qb->add('select', new Expr\Select(array('u')))
   ->
add('from', new Expr\From('User', 'u'))
   ->
add('where', $qb->expr()->orX(
       $qb->expr()->eq('u.id', '?1'),
       $qb->expr()->like('u.nickname', '?2')
   ))
   ->
add('orderBy', new Expr\OrderBy('u.name', 'ASC'));
?>

Als dit als resultaat de query in het comment oplevert is het tijd om die query builder linea recta naar het ronde archief te verplaatsen.
Gewijzigd op 08/02/2014 19:42:16 door Ger van Steenderen
 
Erwin H

Erwin H

08/02/2014 19:56:41
Quote Anchor link
Milo S op 08/02/2014 11:33:13:
Vandaar dat ik het eerst eens gewoon ga proberen zoals Erwin voorstelde. Bij wijs van spreken kan ik altijd nog zeggen dat ik die Dictrine Query Builder wil, het is dan iets meer werk, maar ik heb dan het gevoel alsof het allemaal wat rustiger gaat.

Even los van hoe het het beste is (meningen zijn verdeeld zoals altijd), als je het goed doet (lees: OOP) dan maakt het uiteindelijk niet zoveel uit. Wat je wil is een class die je kan aanroepen om je de query terug te geven die je nodig hebt. Zolang je die structuur goed opzet kan je er nu voor kiezen om het nog even heel simpel te houden en gewoon in die class alle queries uit te schrijven. Later kan je er een andere class voor in de plaats zetten waarin je bijvoorbeeld wel een query builder gebruikt. Of misschien haal je het dan wel weer uit allerlei include bestanden of....

Nou ja, de kracht van OOP dus. Zorg dat je die structuur goed hebt dan kan je op elk moment nog besluiten om het op de ene of de andere manier te doen.
Gewijzigd op 08/02/2014 19:58:36 door Erwin H
 
Wouter J

Wouter J

08/02/2014 20:15:43
Quote Anchor link
>> Als dit als resultaat de query in het comment oplevert is het tijd om die query builder linea recta naar het ronde archief te verplaatsen.

Of je bent nu aan het extreem aan het overdrijven om een paar overduidelijke documentatie foutjes, of ik begrijp je bericht niet...
Gewijzigd op 08/02/2014 20:21:25 door Wouter J
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

08/02/2014 20:19:18
Quote Anchor link
Natuurlijk heeft iedereen zijn eigen mening, maar mijn punt blijft.
Als je voor een simpele query als in het voorbeeld van Doctrine, 10 functies moeten worden uitgevoerd om alleen een zeer simpele string te maken ....
Heeft niks met programmeren te maken.
 
Erwin H

Erwin H

08/02/2014 20:21:20
Quote Anchor link
Wat Ger bedoelt is dat het erg veel code is voor een verder erg simpele query. Eigenlijk wat ik ook tegen die builders heb. Het maakt het niet eenvoudiger om een query te bouwen, niet sneller, niet leesbaarder en niet makkelijker om te testen. Als ik die code zie kan ik niet direct zien wat nu eigenlijk de query is en dus, als het misgaat, wat er veranderd moet worden. Bij de eigenlijke query daarintegen is het wel direct te achterhalen.
Gewijzigd op 08/02/2014 20:21:56 door Erwin H
 
Wouter J

Wouter J

08/02/2014 20:23:20
Quote Anchor link
Mja, jullie hebben wel een punt :)

Offtopic:
Eigenlijk ben ik altijd nog erger en gebruik ik gewoon de ODM van doctrine, hoef ik helemaal geen query meer te typen...


Edit:
Gewijzigd op 08/02/2014 20:37:03 door Wouter J
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

08/02/2014 20:59:01
Quote Anchor link
Heeft mijn sarcasme toch nog effect :-P

Was overigens ook niet bedoelt om doctrine af te kraken, want ik heb alle respect voor hoe het geprogammeerd is.
Ik vind het alleen overkill.
Ik heb in code igniter (active record) alle functies die met een select query te maken hebben eruit gesloopt.
Gewijzigd op 08/02/2014 21:00:50 door Ger van Steenderen
 
Milo S

Milo S

09/02/2014 21:46:39
Quote Anchor link
Wat ik ga doen is als volgt. Ik heb mijn DataMapper. Hierin schrijf ik in de method gewoon de query. Ik roep in die method een method op uit de DatabaseStorage om de query uit te voeren en het resultaat als return mee te geven aan de DataMapper hier kan ik vervolgens de data in door sturen naar daar waar ik het nodig heb.

Klinkt dit als een plan?
 

Pagina: 1 2 volgende »



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.