welke fetch mode?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fullstack developer

Functie omschrijving We are looking for a dutch native speaker Wil jij werken als Senior Developer en werken aan een applicatie die duizenden marketingcampagnes automatisch aanstuurt? Dit is je kans! Kom werken voor onze opdrachtgever en in deze rol zul je veel vrijheid en verantwoordelijkheid krijgen om gezamenlijk de applicatie naar een hoger plan te tillen. Wat ga je verder doen: Optimaliseren, beheren en uitbreiden van onze applicatie; Het bouwen van aansluitingen op de systemen van partners middels API’s; Meedenken over de technische/ontwikkel-standaarden; Proactief verbeterpunten voorstellen. Bedrijfsprofiel Het is een organisatie die met een team van verschillende developers én marketeers

Bekijk vacature »

Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 12946 Introductie We are looking for a Java Developer! Our client is one of the most innovation companies located within the Netherlands. We provide high quality software in a high-tech and challenging market. Functieomschrijving The department is specialized in creating and developing high quality software for manufacturing automation in a high tech environment. We strive to provide our clients with high quality software and deliver state of the art solutions in a variety of ways. Creating software infrastructure using Java SE / EE Create applications to fine tune manufacturing processes

Bekijk vacature »

Front-end developer wanted! (Angular, React, Vue.j

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

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 »

C# Ontwikkelaar

Functieomschrijving Voor een software ontwikkelaar in de omgeving van Vught zijn we op zoek naar een gemotiveerde C# ontwikkelaar. Deel jij hun passie voor development en dan vooral in C#.NET? Dan kan dit wel eens jouw droombaan zijn! Jouw werkzaamheden zullen er ongeveer als volgt uit gaan zien Door de wensen van de klant goed te begrijpen ga jij aan de slag dit om te zetten naar passende oplossingen en werk je deze uit tot een sterk eindproduct. Je gaat je bezighouden met de ontwikkeling van webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Frameworks en C#.

Bekijk vacature »

SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 13382 Introductie We is looking for a HANA Developer to work for our client. The candidate has to have an experience in building Data Intensive Applications (DIA’s). The role of a HANA Developer at ASML involves working on building Data Intensive Applications in an industrial/enterprise environment. The primary responsibility is to handle data from various sources and determine the best way to structure it for use by data analysts, who will run queries and algorithms against it for predictive and prescriptive analytics through machine learning. Wat verwachten we van jou?

Bekijk vacature »

Low-code developer

Functie omschrijving Heb jij altijd al een training willen volgen in het buitenland? Voor een leuke opdrachtgever in omgeving Alphen ad Rijn zijn wij op zoek naar kandidaten die aan de slag willen als Low Code Developer! Beschik jij over HBO/WO nivo, bij voorkeur Informatica, maar een ander technische opleiding zoals bijv. wiskunde, natuurkunde is ook goed. Heb jij aantoonbare affiniteit met IT en ben jij gedreven, enthousiast, communicatief vaardig en klantgericht? Lees dan snel verder! Je wordt getraind tot een volwaardig Low Code Developer, het traject ziet er als volgt uit: Start 1e week januari, opleiding van 3 weken

Bekijk vacature »

Java Developer

Java Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

SQL database ontwikkelaar

Functie omschrijving Ben jij niet bang voor complexe algoritmes? Schikt het schrijven van procedures in T-SQL jouw niet af en heb jij al de nodige informatie in SQL, dan is functie precies wat voor jou! Jouw werkzaamheden gaan er als volgt uit zien: Je gaat werken aan de complexere projecten waar jij van A tot Z bij betrokken bent. Je gaat zorg dragen voor het ontwerp, de ontwikkeling en het updaten van SQL databases. Dit doe je op basis van T-SQL. Jij bent van start tot finish betrokken bij de projecten die jij leidt. Je houdt contact met klanten en

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 »

Front end developer Zorgplatform

Functie Jij als Front end ontwikkelen zult komen te werken samen met 1 PHP ontwikkelaar, 1 Python developer en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De Marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult als Front ender dus voornamelijk bezig zijn met het verbeteren van onze interfaces op onze verschillende producten. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere

Bekijk vacature »

Medior/senior front end developer React Sportsoftw

Functie Voor deze functie ben ik op zoek naar een enthousiaste front end developer die communicatief vaardig is. Jij wordt onderdeel van een enthousiast jong team dat werkt aan grote websites. Binnen jouw rol ben jij diegene die de vertaling maakt van design naar functionele code en zorg jij voor goede experience op meerdere platformen. Dit doe je natuurlijk door gebruik te maken van onze stack; Javascript, HTML, CSS en React. Daarnaast wordt er gebruik gemaakt van Webcomponents en verschillende authenticatie tools. Doordat er hier gestreefd wordt naar de beste gebruikerservaringen, wordt het product constant doorontwikkeld. Hierdoor blijven ze voor

Bekijk vacature »

Dynamische Oracle/APEX Ontwikkelaar in de logistie

Bedrijfsomschrijving De organisatie in de regio Rotterdam is gespecialiseerd in het ontwikkelen van moderne webbased software voor de ERP branche. In totaal is er 20FTE aan specialisten actief binnen de organisatie. De ICT afdeling bestaat momenteel uit 15FTE. Ze groeien ontzettend hard en daarom zoeken zij een Oracle/APEX Developer die het reeds sterke team nog sterker komt maken. Hier werken ze op projectbasis voor verschillende grote organisaties in de logistieke sector. Het is een informele organisatie waarbinnen een fijne werksfeer heerst. Zoals aangegeven willen ze het team nog sterker maken en daarvoor zoeken ze bij voorkeur medior of senior Oracle/APEX

Bekijk vacature »

C#.NET Developer

Dit ga je doen Ontwikkelen van de Back-end in .NET6 / C# en WebAPI (Focus);) Ontwikkelen van de Front-End in Nodje.js en Angular (secundair); Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie; Het oplossen van bugs en incidenten. Hier ga je werken Als C#.NET Developer binnen deze organisatie kan jij het verschil maken. Zij werken momenteel nog met programmatuur die is ontwikkeld in C++. Hiervan gaan zij afscheid nemen zodra alle nieuwe software in C#.NET geschreven is. Een grootschalig en langdurig project. Voor hen is deze software van

Bekijk vacature »

Ambitieuze Junior/Medior Low-code Developers gezoc

Bedrijfsomschrijving Transformeer bedrijven met jouw expertise in innovatieve technologie Ben je een bedreven softwareontwikkelaar met ervaring in Low-code platformen, of sta je te popelen om je in deze baanbrekende oplossing te verdiepen? Wij zijn op zoek naar jou! Ons klantenbestand groeit en we willen ons team uitbreiden met deskundige en leergierige Low-code specialisten. Is het jouw passie om organisaties te ondersteunen in hun digitale transformatie en maatwerkoplossingen te bieden met behulp van geavanceerde software? Wij zijn een vooruitstrevend bedrijf dat dagelijks werkt aan het oplossen van complexe vraagstukken om de digitale ambities van onze klanten te realiseren. Functieomschrijving Ontwikkel op

Bekijk vacature »

Pagina: « vorige 1 2 3 volgende »

Ozzie PHP

Ozzie PHP

23/05/2013 16:57:33
Quote Anchor link
Huh, ik snap 'm even niet:

Juist op de manier zoals jij het nu doet, gaat het toch mis als ik van database wissel?

Stel ik doe dit:
$row = $db->getRow(PDO::FETCH_ASSOC); // dit stukje code staat dus buiten de databse class

En dan wissel ik van database, maar dan staat in de code nog steeds dit:
$row = $db->getRow(PDO::FETCH_ASSOC);

Dan gebruik ik toch juist de verkeerde define?
 
PHP hulp

PHP hulp

09/01/2025 13:24:16
 
Erwin H

Erwin H

23/05/2013 17:07:32
Quote Anchor link
Maar als je dit doet:
cons ASSOC = PDO::FETCH_ASSOC;

Dan zit je of met hetzelfde probleem, of je moet in elke class die je gaat gebruiken elke keer die constantes aanpassen EN je hebt een probleem met het aanroepen ervan. Een class constante kan je namelijk niet zonder classname gebruiken. De manier waarop je de constante dus gebruikt is niet
$row = $db->getRow(ASSOC);

maar:
$row = $db->getRow(Classname::ASSOC);
Gebruik je opeens een andere database class, dan moet je dus ook al deze aanroepen aanpassen. Dat wil je niet.

Dus, je maakt een eigen set aan constantes, met eigen waardes en die hoef je NOOIT meer aan te passen.
 
Ozzie PHP

Ozzie PHP

23/05/2013 17:11:23
Quote Anchor link
Ja, ik moet ze dan wel in iedere class zetten. Maar het lijkt me handiger om de defines te gebruiken dan de bijbehorende integers. Wat als men ineens een integer verandert. Als je de defines gebruikt gaat het dan nog steeds goed.

Mijn idee was dan om niet dit te doen:
$row = $db->getRow(Classname::ASSOC);

maar dit:

$row = $db->getRow('assoc');

In de getRow functie zou je dan de fetchmode kunnen ophalen door te zetten:

self::$fetch_mode;

Dan wordt de class constant assoc aangeroepen die vervolgens de juiste define teruggeeft.
 
Erwin H

Erwin H

23/05/2013 17:16:46
Quote Anchor link
Ozzie PHP op 23/05/2013 17:11:23:
Wat als men ineens een integer verandert.

Dat kan niet. Een integer blijft een integer in php.

Wat jij blijkbaar niet doorhebt is dat die integer helemaal niets betekent. Die zijn niet gerelateerd aan de PDO constantes. In je database class zal je dus aan de hand van je eigen gedefinieerde constantes moeten bepalen welke database specifieke fetch mode je moet gebruiken. Je zal dus een vertaling moeten maken van je eigen constante naar, in dit geval, PDO fetch constantes.



Toevoeging op 23/05/2013 17:18:03:

Ozzie PHP op 23/05/2013 17:11:23:
$row = $db->getRow('assoc');

Uh, en nu ga je weer terug naar strings? Volgens mij ben ik je kwijt.
Gewijzigd op 23/05/2013 17:17:12 door Erwin H
 
Ozzie PHP

Ozzie PHP

23/05/2013 17:36:23
Quote Anchor link
Hihihi... volgens mij zijn we elkaar even kwijt.

Zoals ik het zie (correct me if I'm wrong...).
De PDO constante PDO::FETCH_ASSOC heeft als waarde een of andere integer, bijv. (dit verzin ik nu even) 1. Stel ik gebruik niet een PDO database, maar een FOO database dan heb je daar wellicht een constante FOO::FETCH_ASSOC en deze heeft als waarde de integer 3. De waardes voor dezelfde manier van fetchen zijn dus verschillend, maar in je code wil je altijd dezelfde waarde kunnen gebruiken.

Ik wil niet dat als ik een PDO db gebruik ik dit moet doen:
$row = $db->getRow(PDO::FETCH_ASSOC);

en als ik besluit om een FOO database te gaan gebruiken, dat ik dan overal in mijn code de bovenstaande regel moet aanpassen naar:
$row = $db->getRow(FOO::FETCH_ASSOC);

Daarom lijkt het me dus handig om altijd 1 waarde mee te geven 'assoc'.
$row = $db->getRow('assoc');

In de PDO class "vertaal" ik dan de value 'assoc' naar de juiste define. En dat zou je dan via class constants kunnen doen.

In de PDO class krijg je dan:
cons assoc = PDO::FETCH_ASSOC;

en in de FOO class krijg je dan:
cons assoc = FOO::FETCH_ASSOC;

Snap je nu beter wat ik bedoel?

Uiteraard als jij een betere oplossing weet, hoor ik het graag!
 
Erwin H

Erwin H

23/05/2013 17:45:30
Quote Anchor link
Even terug naar de uitgangspunten:
1) Je wil geen strings gebruiken om de mode door te geven want dan kan je je vertikken
2) Je wil zonder problemen van database interface kunnen veranderen
3) Je wil bestaande code niet hoeven aan te passen bij een verandering of uitbreiding

Mijn voorstel:
nieuwe class waarin je zelf constantes definieert die de fetch modus aangeven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
abstract class Ozzie_Fetch(
  const ASSOC = 0;
  const NUM = 1;
  const BOTH = 2;
  const INVERTED = 3;
  const DOWNUNDER = 4;
);

?>


In je database object aanroepen doe je nu dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$row
= $db->getRow(Ozzie_Fetch::ASSOC);
?>


In je PDO database class vertaal je dat met een eenvoudig switch:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
switch( $mode ){
  case
Ozzie_Fetch::ASSOC:
    return PDO::FETCH_ASSOC;
  case
Ozzie_Fetch::BOTH:
    return PDO::FETCH_BOTH;
  default:

    return PDO::FETCH_ASSOC;
}

?>


Even checken of dit aan de uitgangspunten voldoet:
1) Je wil geen strings gebruiken om de mode door te geven want dan kan je je vertikken
-> ja, ik gebruik namelijk een constante die mijn editor kan aanvullen
2) Je wil zonder problemen van database interface kunnen veranderen
-> geen probleem, constantes zijn database class, interface en driver onafhankelijk
3) Je wil bestaande code niet hoeven aan te passen bij een verandering of uitbreiding
-> ook geen probleem, een nieuwe fetch methode zal bij een huidige class gewoon de default gaan gebruiken.

Bovendien, als ik nu een andere driver of interface ga gebruiken die een al bestaande fetch methode niet ondersteunt dan kom ik ook niet in de problemen, omdat ik ook dan gewoon kan terugvallen op een default.
 
Ozzie PHP

Ozzie PHP

23/05/2013 18:06:38
Quote Anchor link
Ah, oke... nu begin ik beter te begrijpen wat je bedoelt!

Dit snap ik nog niet helemaal:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
switch( $mode ){
  case
Ozzie_Fetch::ASSOC:
    return PDO::FETCH_ASSOC;
  case
Ozzie_Fetch::BOTH:
    return PDO::FETCH_BOTH;
  default:

    return PDO::FETCH_ASSOC;
}

?>

Die $mode is dan in feit een integer geworden... en die kan ik dan weer vergelijken met de fetch constants?
 
Erwin H

Erwin H

23/05/2013 18:10:27
Quote Anchor link
Ja, Fetch_Ozzie::ASSOC = 0, zo hebben we het gedefinieerd. Dus als mode de waarde nul heeft dan is dat gelijk aan Fetch_Ozzie::ASSOC.

Doe ook maar eens
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo Fetch_Ozzie::ASSOC.'/'.Fetch_Ozzie::NUM.'/'.Fetch_Ozzie::BOTH;
?>

Resultaat: 0/1/2

En dus zou je ook gewoon dit kunnen doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$row
= $db->getRow(0);
?>

Alleen dat wil je niet, want dan krijg je weer 'uh, wat was 0 ook alweer en wat was 1?'.
 
Wouter J

Wouter J

23/05/2013 19:09:33
Quote Anchor link
Ozzie, constants zijn gewoon variabelen. Het enige verschil is dat de waarde van een constant vast (constant) is en van een variabele is hij variabel.
 
Ozzie PHP

Ozzie PHP

23/05/2013 20:05:50
Quote Anchor link
Ah oké. Ik begin het te begrijpen nu!! Thanks :)

Maar nu ben ik even zo maar hardop aan het denken...

Stel ik doe niet dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
abstract class Ozzie_Fetch(
  const ASSOC = 0;
  const NUM = 1;
  const BOTH = 2;
  const INVERTED = 3;
  const DOWNUNDER = 4;
);

?>

Maar dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
abstract class Ozzie_Fetch(
  const ASSOC = 'ASSOC';
  const NUM = 'NUM';
  const BOTH = 'BOTH';
  const INVERTED = 'INVERTED';
  const DOWNUNDER = 'DOWNUNDER';
);

?>

En in plaats van dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
switch( $mode ){
  case
Ozzie_Fetch::ASSOC:
    return PDO::FETCH_ASSOC;
  case
Ozzie_Fetch::BOTH:
    return PDO::FETCH_BOTH;
  default:

    return PDO::FETCH_ASSOC;
}

?>

Zou ik dan in de PDO class constanten maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
class Ozzie_PDO {
  const ASSOC = PDO::FETCH_ASSOC;
  const NUM = PDO::FETCH_NUM;
  const BOTH = PDO::FETCH_BOTH;
  // ...
}
?>

En in de getRow($fetch_method) doe ik dan zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
public function getRow($fetch_mode) {
  $fetch_mode = self::$fetch_mode;
  // ...
}
?>

Zou zoiets kunnen?

Offtopic:

Wat zijn inverted en downunder voor fetch methodes?
 
Wouter J

Wouter J

23/05/2013 20:11:22
Quote Anchor link
Dat zou kunnen werken, ware het niet dat self::$foo de foo property van de klasse opvraagt, ipv de constante.
 
Ozzie PHP

Ozzie PHP

23/05/2013 20:21:03
Quote Anchor link
Ah oke... en ik kan een constante niet op een andere manier opvragen? Bijv. Ozzie_PDO::$fetch_mode? Of zal dat ook niet werken?
 
Wouter J

Wouter J

23/05/2013 20:46:16
Quote Anchor link
de enige manier die ik kan bedenken zou Ozzie_PDO::{$fetch_mode} zijn.
 
Ozzie PHP

Ozzie PHP

23/05/2013 20:47:38
Quote Anchor link
Ah oké... zal het straks eens gaan testen dan. Het lijkt me wel een mooiere/handigere methode dan de switch implementatie.
 
Eddy E

Eddy E

23/05/2013 20:50:14
Quote Anchor link
Of, lekker lui, via global. Ik weet niet of dat ook classe-overstijgend is, maar is een poging waard.
 
Ozzie PHP

Ozzie PHP

23/05/2013 21:16:33
Quote Anchor link
Wouter J op 23/05/2013 20:46:16:
de enige manier die ik kan bedenken zou Ozzie_PDO::{$fetch_mode} zijn.

Wouter, had jij dit getest? Ik krijg het niet werkend...?



Toevoeging op 23/05/2013 21:26:00:

Ik lijk het nu werkend te hebben via de functie "constant()";
 
Erwin H

Erwin H

23/05/2013 23:36:16
Quote Anchor link
Ozzie PHP op 23/05/2013 20:05:50:
Offtopic:

Wat zijn inverted en downunder voor fetch methodes?

ha ha, als iemand die zich 'Ozzie' noemt zou je toch moeten weten waar de term 'downunder' vandaan komt. En inverted zit indezelfde hoek, hoewel je met een beetje goede wil daar nog een echte fetch methode van zou kunnen maken.

Overigens kan je waarschijnlijk best doen wat je wilt, maar zorg dat je jezelf niet blind staart op PDO. De strings die je nu maakt zijn namelijk maakt zijn wel zodanig dat je die PDO constantes er makkelijk van kunt maken, maar krijg je morgen iets heel anders dan lukt het meteen niet meer.
 
Ozzie PHP

Ozzie PHP

23/05/2013 23:41:32
Quote Anchor link
Hehe... daar heeft mijn Ozzie dan weer niks mee te maken :)

Wat bedoel je met "De strings die je nu maakt zijn namelijk maakt zijn wel zodanig dat je die PDO constantes er makkelijk van kunt maken, maar krijg je morgen iets heel anders dan lukt het meteen niet meer."

Ik kan toch aan iedere string een fetch mode koppelen?
 
Erwin H

Erwin H

24/05/2013 10:31:14
Quote Anchor link
Volgens mij heb ik iets over het hoofd gezien in jouw methode. Naast de algemene constantes, maak je ook nog constantes aan in de PDO class, die dan weer de waarde krijgen van de echte PDO constantes....

Er is alleen wel 1 probleem mee. Als je morgen een nieuwe fetch methode nodig hebt omdat je een nieuwe database interface gaat gebruiken, dan heb je die niet gedefinieerd in al je oude database classes. Geef je die nieuwe fetch methode dan door in de getRow methode dan krijg je een foutmelding. Dat is dus niet in overeenstemming met mijn uitgangspunt:
Quote:
3) Je wil bestaande code niet hoeven aan te passen bij een verandering of uitbreiding
Gewijzigd op 24/05/2013 10:39:19 door Erwin H
 
Ozzie PHP

Ozzie PHP

24/05/2013 11:27:24
Quote Anchor link
Erwin H op 24/05/2013 10:31:14:
Volgens mij heb ik iets over het hoofd gezien in jouw methode. Naast de algemene constantes, maak je ook nog constantes aan in de PDO class, die dan weer de waarde krijgen van de echte PDO constantes....

Ja, inderdaad.

Erwin H op 24/05/2013 10:31:14:
Er is alleen wel 1 probleem mee. Als je morgen een nieuwe fetch methode nodig hebt omdat je een nieuwe database interface gaat gebruiken, dan heb je die niet gedefinieerd in al je oude database classes. Geef je die nieuwe fetch methode dan door in de getRow methode dan krijg je een foutmelding. Dat is dus niet in overeenstemming met mijn uitgangspunt:
Quote:
3) Je wil bestaande code niet hoeven aan te passen bij een verandering of uitbreiding

Hmmm, daar heb je inderdaad een goed punt. Ik ben wel benieuwd wat daar een goede oplossing voor is.

Sowieso als ik geen fetch method meegeef dan default ik naar de assoc method. Maar wat inderdaad als je in de fetch class een constant aanmaakt die in een ander database type niet bestaat.

Bij PDO is dat trouwens al afgevangen heb ik gemerkt. Als ik een waarde ingeef die niet overeenkomt met een een van de constanten, dan default ie naar de BOTH fetch methode. Maar of iedere database dat zo netjes afhandelt is maar de vraag.

Wat ik zou kunnen doen is een beveiliging inbouwen, waardoor als een constant niet bestaat, hij automatisch terugvalt op de ASSOC methode.

MAAR...

Als ik dan even verder denk. Meteen even een leuk praktijkvoorbeeld (zie ook mijn andere vraag). PDO kent een PDO::FETCH_CLASS methode waarmee een nieuwe class wordt aangemaakt die automatisch gevuld wordt met gegevens uit de database. Lijkt me heel handig, maar ik vermoed dat deze manier van fetchen niet door alle andere databases wordt ondersteund (misschien kun jij dit bevestigen of ontkennen?). Stel nu dat ik zou overstappen op database X, maar in mijn code gebruik ik nog wel de fetch_class methode. Dan zou ik een default kunnen inbouwen dat ie terugvalt op de assoc methode... maar als je heel eerlijk bent, wat heb ik daar eigenlijk aan? Want in de code verwacht je dan dat er een object wordt aangemaakt, terwijl dat nu niet gebeurt, dus alsnog loopt je code compleet de soep in.

Hoe zou je dit volgens jou dan moeten ondervangen? Het enige wat ik me nu kan bedenken is dat je uitsluitend fetch methodes gebruikt die door alle databases worden ondersteund. Alleen dat zou dan weer betekenen dat ik fetch_class niet kan gebruiken, wat me nu juist weer heel handig lijkt. Of ik moet accepteren dat ik (voorlopig) alleen PDO kan gebruiken (waar ik op dit moment overigens geen bezwaren in zie).

Het is een heel verhaal geworden inmiddels. Je hoeft niet overal op te reageren hoor anders kost het jou ook erg veel tijd, maar ik ben wel benieuwd hoe jij dit zou oplossen. Alvast bedankt weer voor je reactie.
Gewijzigd op 24/05/2013 11:30:44 door Ozzie PHP
 

Pagina: « vorige 1 2 3 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.