dicht timmeren?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Software Developer

Functie omschrijving Op zoek naar een nieuwe uitdaging binnen PHP? Lees dan snel verder! Wij zoeken een ervaren PHP developer die binnen een organisatie gaat functioneren als verlengstuk van de klant. Wij zoeken voor deze iemand die technisch complexe zaken met enthousiasme en plezier aanvliegt. Verder moet je instaat zijn om je tijd goed te managen omdat je aan meerdere projecten tegelijkertijd werkt. Je werkt met de nieuwste technieken en tijdens deze uitdaging werk je veel samen met de front-end developers van deze organisatie. Wij zoeken iemand die zichzelf graag uitdaagt en altijd de beste wilt zijn. Bedrijfsprofiel Waar ga

Bekijk vacature »

Functioneel applicatiebeheerder - SOP-SYS-SAM

TenneT is hard groeiend om de onze 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 Functioneel Applicatiebeheerder voor het financiele domein op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je gaat samenwerken in een team van circa 15 functioneel applicatiebeheerders en gaat onderdeel uitmaken van een DevOps team. Met dit team ga je applicaties (laten) ontwikkelen en beheren. Hierbij concentreer je je vooral op

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc 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

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 »

Front-end Developer (HTML/CSS, Angular/React/Vue,

Functie Je zal aan de slag gaan in een klein, hecht team met front-end development experts die de ambitie delen mooi werk te leveren. Samen met hen zal je werken aan het gebruiksvriendelijk en interactief maken van complexe webapplicaties, websites en mobile apps. Je levert klanten wat ze nodig hebben terwijl je actief aan jezelf blijft werken met de ondersteuning vanuit je werkplek. Talen als Javascript programmeer jij vloeiend en je hebt kennis van frameworks als React en Angular. Je zou je het liefst nog veel meer ontwikkelen in verschillende front-end talen. Deze kennis deel je graag met je collega’s,

Bekijk vacature »

Medior/senior Front-end developer

Functie 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 gebouwd, of grote complexe wijzigingen worden doorgevoerd op bestaande omgevingen. Je kunt (afhankelijk van jouw wensen en doelen) dus afwisselend werken in beide teams. Hiernaast participeer je in het Chapter Front-end development waar gezamenlijk kennis en ervaring wordt gedeeld. Als Front-end developer is het jouw doel

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 »

Front-end Developer vue.js node.js SaaS

Dit ga je doen Het ontwikkelen van nieuwe features die bijdragen aan de groei van de klanten van de organisatie; Je denkt mee over nieuwe innovaties, features en verbeteringen in de applicatiearchitectuur; Je draagt bij aan de continue ontwikkeling van jouw team doordat je elke dag streeft naar het verbeteren van jouw eigen prestaties; Je neemt actief deel aan Scrum meetings en de Frontend Guild. Hier ga je werken Voor een snel groeiend bedrijf de regio Nieuw Vennep zijn wij opzoek naar een ervaren Front-end Developer. De organisatie is actief in de e-commercebranche en ontzorgt haar klanten middels een SaaS-platform.

Bekijk vacature »

Network Engineer (f/m/d) in Heidelberg

Network Engineer (f/m/d) The IT Services team operates and supports the IT infrastructure and services at EMBL headquarters in Heidelberg and at the laboratory’s sites in Barcelona and Rome. As part of IT Services, the Network team is responsible for managing and developing the network infrastructure in our data centres, on campus, and to our external network providers. As a leading scientific institution with highly data-intensive research, extensive data flows at and between the laboratory’s six sites and to the Internet, EMBL is connected to national and international scientific networks using state-of-the-art technologies from vendors including Cisco, Extreme Networks and

Bekijk vacature »

Medior Java developer

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 »

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

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 »

Mendix Developer

Functie Wat ga je doen als Mendix Developer? We leven in een wereld die snel ontwikkelt en veranderd, ook nemen bedrijfsbelangen toe en blijken risico’s moeilijker in te schatten, daarom wij op zoek naar Junior, Medior en Senior Developers die bedrijven kunnen helpen met hun screeningproces en zorgen dat deze efficiënt en 100 procent AVG compliant is. Het concept achter Mendix is duidelijk. De klant heeft een vraag/probleem. Dit kunnen we door middel van slimme software oplossen. In plaats van te werken met de nieuwste technieken en tools, wordt er gekozen voor het implementeren en maken van software dat op

Bekijk vacature »

Software Ontwikkelaar .NET te Zaandam

Bedrijfsomschrijving Je komt hier terecht bij een door-en-door softwarebedrijf, waarbinnen meerdere SaaS pakketten worden ontwikkelt voor diverse sectoren. Hierbij kun je denken aan bijvoorbeeld de logistieke en medische branche. Deze organisatie kenmerkt zich door de hoge mate van complexiteit in de applicaties, wat betekent dat jij je hier niet zal gaan vervelen. Integendeel: Jij gaat hier elke dag ontzettend veel leren en je in razend tempo ontwikkelen als C# .Net Developer met focus op back-end. Het team bestaat uit ongeveer 20 personen personen, waarvan het grootste deel zich richt op software development. De sfeer is informeel en professioneel. De producten

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Ridderkerk zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met

Bekijk vacature »

Pagina: « vorige 1 2 3 4 5 volgende »

Niels K

Niels K

01/03/2012 10:15:35
Quote Anchor link
Allright! :-)

Je weet wie het zegt he ;-) Beter dan dat iemand het zegt met zun volle verstand.
Gewijzigd op 01/03/2012 10:15:59 door Niels K
 
PHP hulp

PHP hulp

27/05/2026 11:42:16
 
Ozzie PHP

Ozzie PHP

01/03/2012 10:23:27
Quote Anchor link
Hehe... dat is waar, en ach van een kieviet kan ik het wel hebben :)
 
Ozzie PHP

Ozzie PHP

02/03/2012 22:15:40
Quote Anchor link
Nu heb ik toch nog even een leuke vraag. Ik ben bezig met een database class die de PDO class extend. Ik wil gebruik maken van method chaining.

$rows = $database->select('veld')->from('tabel');

Nu wil ik per pdo driver een class maken (ik noem 'm even "class X") die gebruik maakt van een aantal aparte "basis classes" voor iedere functie (select, insert, update, delete).

Oké, so far so good...

Nu wil ik in "class X" een magische __call functie gebruiken die op basis van de aangeroepen functie een van de "basis classes" aanroept.

$rows = $database->select()->... roept de basis class "PDO_Select" aan
$database->delete{}->... roept de basis class "PDO_Delete" aan
enz.

Nu mijn vraag:

Als ik een niet bestaande functie aanroep:

$database->bestaatniet()

Dan wordt via mijn autoload functie een niet bestaande class aangeroepen, namelijk "PDO_Bestaatniet". Mijn autoload functie gooit dan een exception die keurig meldt dat de class "PDO_Bestaatniet" niet bestaat.

Stel nu dat je als programmeur een typefoutje maakt:

$database->duhliet()->...

Dan krijg je een melding dat de class "PDO_Duhliet" niet bestaat. Echter, het zou gebruikersvriendelijker zijn om een "relevante" foutmelding te tonen, bijvoorbeeld:

De door u aangeroepen database actie "duhliet" bestaat niet.

Nu kan ik dit wél voor elkaar krijgen door eerst te controleren via file_exist of de class (het bestand) bestaat.

Dit houdt alleen wel in dat bij iedere database actie die ik doe een file_exist controle moet worden gedaan om te controleren of het een geldige functie betreft.

De afweging is nu dus:

1) Als de functie niet bestaat wordt een foutmelding getoond dat de class niet bestaat. Deze oplossing is niet zo heel gebruiksvriendelijk omdat de foutmelding niet echt heel duidelijk is.

2) Als de functie niet bestaat, wordt er keurig een foutmelding getoond die meldt dat de betreffende database functie niet bestaat. Helemaal top, super gebruiksvriendelijk! ...alleen bij iedere database actie die wordt uitgevoerd moet wel even een file_exist worden uitgevoerd.

Welke van deze 2 opties heeft jullie vooorkeur?
 
Niels K

Niels K

03/03/2012 11:30:31
Quote Anchor link
Hoi Ozzie,

Ik denk dat je heel even de mist in gaat met je denkwijze. Waarom voor elke actie een nieuwe class? Ik weet niet hoeveel methode PDO heeft maar zal toch wel richting de 50 gaan.. Is dat geen overkill? ;-)

Probeer eens gebruik te maken van het Adapter pattern?

Voorbeeld: (heel summier)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

abstract Db_Adapter_Abstract {}

?>


Bovenstaande is de normale 'abstract' class van de database handler. Je kan dan verschillende Adapters hebben.

- PDO
- Mysqli
- Oracle
- Db2
- Sqlsrv

Zijn er vast nog wel meer te vinden, maar het gaat even om het idee. Stel we willen als adapter class Mysqli:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

class Db_Adapter_Mysqli extends Db_Adapter_Abstract {}

?>


En wat als we nu PDO willen doen? Voor PDO heb je toch ook verschillende Adapters? Jep, dat klopt. Geen enkel probleem. We maken weer een abstracte class

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

abstract class Db_Adapter_Pdo_Abstract extends Db_Adapter_Abstract {}

?>


Als we dan een PDO Mysql adapter willen gebruiken doe je dat als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

class Db_Adapter_Pdo_Mysql extends Db_Adapter_Pdo_Abstract {}

?>


Snap je de werking van mijn opzet? Snap je wat een abstracte class doet en kan? Als je deze structuur gebruikt houd je, je nog netjes aan het Adapter pattern ook. Tenminste dat denk ik ;-)

De aanvulling van de methodes moet je even zelf verzinnen. Is gelijk een mooie oefening om het een beetje onder de knie te krijgen.

Het gaat mij namelijk om de denkwijze die jij op dit moment hebt. Het is ansich begrijpelijk dat je zo denkt, maar dat betekend niet dat het ook daadwerkelijk allemaal klopt.

Wanneer je dit helemaal snapt en (goed) geïmplementeerd hebt kunnen we eens gaan kijken naar het verder bouwen van je ORM.

Succes ;-)
 
Wouter J

Wouter J

03/03/2012 11:48:55
Quote Anchor link
Niels, voor de CRUD (creating, reading, updating, deleting) is het toch wel beter om verschillende klasse te maken? Of is dat ook niet correct, dan moet ik mijn AR aanpassen...
 
Ozzie PHP

Ozzie PHP

03/03/2012 14:36:26
Quote Anchor link
Niels, dankjewel voor je uitleg. Dat klinkt allemaal best ingewikkeld wat je zegt...

Mijn bedoeling was om te doen wat Wouter zegt. Dus een aparte (pdo) class voor select, update, insert en delete. Uitsluitend voor die acties wil ik een aparte class maken. Dat zijn er dus 4. Per class krijg je dan weer specifieke functies die bij een select/delete/update/insert query horen. Is dat niet goed dan?

Toevoeging op 03/03/2012 15:28:39:

Oh ja, voordeel als je die 4 losse classes gebruikt... ik kan alleen de functies aanspreken die bij een select/update/insert/delete query horen omdat alleen deie functies in de class aanwezig zijn.

Ik kan dus niet per ongeluk zoiets doen als

$rows = $database->select()->from()->delete()->where();

Aangezien de functie delete() in de select class niet bestaat kan ik deze dus ook nooit aanroepen. Dat lijkt me toch ook wel een voordeel van het gebruik van losse classes.
 
Wouter J

Wouter J

03/03/2012 16:46:04
Quote Anchor link
Niels, ik dacht aan zoiets, is dit dan fout? (alleen even voor de read gedeelte gedaan)
Afbeelding

Het lijkt me ook een stuk beter OO, omdat je zo de taken van read, create, update en delete verdeelt over verschillende klasse.
Gewijzigd op 03/03/2012 16:47:05 door Wouter J
 
Ozzie PHP

Ozzie PHP

06/03/2012 10:12:21
Quote Anchor link
Is het een goede gewoonte om variabelen te typecasten?

Stel dat je een functie setString($string) hebt, die alleen door programmeurs wordt gebruikt. Moet je er dan vanuit gaan dat de programmeur zo slim is dat ie inderdaad een string invoert, of moet je de invoer toch typecasten naar een string?

Dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
public function setString($string) {
  $this->string = (string) $string;
}
  
?>


Is dit een goede gewoonte of is het overkill?

Of moet je het nog verder doortrekken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
public function setString($string) {
  if (!is_string($string)) {
    // throw Exception
  }
  $this->string = $string;
}
  
?>
 
Wouter J

Wouter J

06/03/2012 14:01:44
Quote Anchor link
Ik gebruik altijd typecasten, ik wil zeker weten dat er in de variabele zit wat ik verwacht. Ik vind het een goede gewoonte.
 
Ozzie PHP

Ozzie PHP

06/03/2012 14:17:39
Quote Anchor link
Oké, top. Dat ga ik mezelf ook maar eens aanwennen :) Denk dat het geen verkeerde gewoonte is.
 
Jacco Brandt

Jacco Brandt

06/03/2012 16:33:23
Quote Anchor link
Of je doet dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php
function setString(string $string)
 
Wouter J

Wouter J

06/03/2012 16:37:07
Quote Anchor link
@Jacco, helaas kan dat niet in PHP :(
 
Eddy E

Eddy E

06/03/2012 16:46:51
Quote Anchor link
Dit wel (lekker onzinnig, maar het werkt)

$string = trim($string." ");
 
Ozzie PHP

Ozzie PHP

06/03/2012 18:12:16
Quote Anchor link
@Eddy... dat is inderdaad behoorlijk onzinnig ;)
 
Wouter J

Wouter J

06/03/2012 18:13:37
Quote Anchor link
Of je doet gewoon dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$str
= ''.$myStr;
?>


Dit is geen typecasten, maar type juggling.
Gewijzigd op 06/03/2012 18:13:54 door Wouter J
 
Ozzie PHP

Ozzie PHP

06/03/2012 18:16:13
Quote Anchor link
Dan liever dit toch?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$string
= (string) $string;
?>
 
Niels K

Niels K

06/03/2012 18:29:50
Quote Anchor link
Olá,

Excuses voor de laatste reactie, dit topic was me heel even ontschoten.
Wouter, naar mijn mening heb jij het bij het rechte eind. Je zou voor de grap eens moeten kijken naar Zend_Db en naar Zend_Db_Table. Dat vind ik persoonlijk een geweldige oplossing.

@Ozzie,

Ik cast nooit wat ;-) Of iig bijna nooit.
 
Ozzie PHP

Ozzie PHP

06/03/2012 18:33:36
Quote Anchor link
@Niels... waarom niet? Is op zich toch wel een goede / nette gewoonte?

(ik deed het voorheen ook niet...)
 
Niels K

Niels K

06/03/2012 18:35:33
Quote Anchor link
Elke keer een var naar een array of string casten? Nee, lijkt mij niet de bedoeling. Typehinting gebruik ik dan weer wel (heel veel) ;-)
 
Ozzie PHP

Ozzie PHP

14/03/2012 08:50:08
Quote Anchor link
Ben ik weer even. Toch nog even een vraag... ik heb namelijk het gevoel dat ik misschien teveel aan het "dicht timmeren" ben.

Voorbeeld:

Ik kan via een select functie gegevens opvragen uit de database.

$row = $database->select('veld1', 'veld2')->from(...)->where(...)

Wat ik nu doe, is controleren of ieder veld in de select functie een string is. Zo niet dan gooi ik een Exception. Datzelfde doe ik bijvoorbeeld ook voor de from. Is de opgegeven tabel naam een string? Nee? Dan gooi ik een Exception.

Ik zou ook de veldnamen in de select functie kunnen typecasten naar strings, maar als iemand dan true (een boolean) als veldnaam zou invoeren, dan zou dit worden omgezet naar een "1" en dan krijg je wellicht onverwachte resultaten terug. Vandaar dat ik dus controleer of de veldnaam een string is.

Ander voorbeeld:

Een functie om een bericht op het scherm te tonen. De parameter $exit geeft aan of het script na het tonen van het bericht moet stoppen (die). Ik controleer in de functie of de parameter $exit wel een boolean is. Zo niet, dan gooi ik een Exception.

Wat vinden jullie? Hoe ver moet ik gaan? Want om nu in iedere functie te gaan controleren of de verwachte invoer een string is... tja, ik weet het niet :-s

Graag advies!
Gewijzigd op 14/03/2012 08:51:21 door Ozzie PHP
 

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