[oop] validatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Creatieve Front-end developer gezocht!

Functie Het front-end team bestaat momenteel uit 4 collega’s en is hard aan het groeien! Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren. Je werkt in het front-end team samen met de back-end teams en product owners om te zorgen dat de applicaties een fijne gebruikerservaring opleveren. Jouw expertise zorgt ervoor dat de juiste keuzes gemaakt worden qua techniek en ontwerp, van back-end tot aan gebruiker. In samenspraak met je team bepalen jullie de beste keuze voor techniek. Ook is er altijd ruimte om nieuwe technieken te ontdekken. Eisen • Je hebt gedegen

Bekijk vacature »

Front-end developer (Angular)

Functie Het team bestaat uit een architect, fullstack developers, app developers, de product owner en projectmanager. Eenieder draagt vanuit zijn discipline bij aan een complete oplossing voor de klant. Uiteraard zul je hierin nauw samenwerken met je collega’s. Jij wordt verantwoordelijk voor de front-end implementatie en fungeert als lead op dit gebied binnen het team. Je kunt helder formuleren, ideeën uitdragen en overbrengen aan je collega’s. Qua technische stack is het vooral van belang dat je ervaren bent met Angular, HTML5, CSS en TypeScript. Verder is ervaring in NgRx, Bootstrap, BEM en Cypress een pré, evenals affiniteit met UX/UI Design!

Bekijk vacature »

Back end developer Onderwijssoftware

Functie Als back end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van hoogwaardige

Bekijk vacature »

Fullstack JavaScript developer (ReactJS, NodeJS, T

Functie Het team bestaat momenteel uit ruim 15 collega’s, waarvan ruim de helft in het ontwikkelteam werkzaam is. Er zijn gave plannen om het platform ook te gaan toepassen op bijv. vliegvelden, maar ook internationale groei zit in het verschiet en daarom zijn ze op zoek naar versterking. Als Fullstack JavaScript developer werk je nauw samen met 9 fullstack (Python en .NET) developers. Binnen het team ga jij je toespitsen op het creeren van de optimale toegankelijkheid en user experience. Om dit voor elkaar te krijgen zul je ontwerpen, programmeren, testen en implementeren. Het hele proces dus! Maar ook bijvoorbeeld

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

Full Stack Java ontwikkelaar

Functieomschrijving Voor de politie zijn wij op zoek naar een Full stack Java ontwikkelaar. Als ervaren full stack Java ontwikkelaar binnen de gewenste deadlines meewerken aan de totstandkoming van de gewenste werkzaamheden. Taken Upgraden van GeoServer, SOLR, Oracle Spatial database, Tomcat Migreren Oracle Spatial naar PostgreSQL/PostGIS Migreren SOLR naar ElasticSearch Geografische gegevens op het interne netwerk beschikbaar maken Doorontwikkelen en actualiseren van de geografische services Het up to date brengen van de CI/CD pipeline, samen met medewerkers die verantwoordelijk zijn voor de CI/CD tooling Aanspreekbaar op de solution architectuur en stemt die met collega's in het cluster Geo De opdracht

Bekijk vacature »

Als PHP developer bijdragen aan beter onderwijs?

Functie Momenteel zijn ze op zoek naar een PHP developer die mee gaat werken aan de (door)ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js en

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 »

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); Ontwikkelen in Blazor; Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie. Hier ga je werken Binnen deze organisatie werken duizenden mensen binnen allerlei verschillende disciplines. Tevens hebben zij veel specialiteiten in huis, waaronder ook .Net Developers. Ter uitbreiding van een nieuw team en ter ondersteuning van het project zijn ze opzoek naar een nieuwe collega voor het team. Als C#.NET Developer zal jij je

Bekijk vacature »

Back end developer Digital Agency

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 »

PHP Developer (junior functie)

Functie omschrijving Ben jij een starter en wil je werken bij een jong en leuk bedrijf? Lees dan verder! Wij zijn op zoek naar een PHP Developer binnen een junior functie. Binnen dit bedrijf gaat het om persoonlijke aandacht en ontwikkeling! Je komt te werken voor een leuk communicatiebureau die alles op het gebied van online en offline communicatie doet. Dit doen zij voor verschillende branches, waardoor je aan diverse soorten projecten mag werken, dit maakt deze baan erg leuk! Daarbij werk je aan een door hun zelf ontwikkeld framework welke goed leesbaar is. Je maakt voor bedrijven op maat

Bekijk vacature »

Machine Software Developer

Bij een bedrijf in de machinebouw, regio Roosendaal, zijn we op zoek naar een: Machine Software Developer Waar ga je werken? Onze opdrachtgever is gespecialiseerd in de grondverzetmachines. Al meer dan 50 jaar leveren ze zowel nationaal als internationaal diverse machines. Het is een familiebedrijf met een informele werksfeer. Wat ga je doen? Als Machine Software Developer ben je verantwoordelijk voor: - Je ontwerpt, ontwikkelt en debugt software voor machinebesturingssystemen en complexe landbouwmachines; - Je stelt gebruikersinterfaces op (cabinedisplays); - Op termijn ga je softwareprojecten leiden voor specifieke machines; - Inclusief planning, documentatie en validatie; - Om specificaties te verifiëren

Bekijk vacature »

.NET developer

Functie Jij begint als .NET ontwikkelaar in een team met 10 andere Software Engineers. De werkzaamheden zijn afwisselend, zo kan het dat jij bezig bent met volledig nieuwe features of het door ontwikkelen van bestaande sites of shops. Wij ontwikkelen web applicaties, maar ook mobiele applicaties. Daarnaast bijt jij je soms ook van in externe koppelingen met systemen zoals een ERP. Als team is er een duidelijke focus m.b.t. het waarborgen van de performance en snelheid van webshops. Ook zijn wij expert op het gebied van configuratoren. Kortom enorm veel afwisselende werkzaamheden! Ook jouw werkplek kan afwisselend zijn. Soms heb

Bekijk vacature »

.NET Developer

Dit ga je doen Tot jouw takenpakket behoort onder andere: Webapplicaties ontwerpen, bouwen, testen en implementeren in .NET/C#.; Ontwikkelen, implementeren en beheren van maatwerkapplicaties; Onderhouden en beheren van standaardpakketten; Onderzoeken en beoordelen van nieuwe technieken. Hier ga je werken Als .NET ontwikkelaar kom je te werken bij een grote semioverheidsinstelling in Nijmegen. De organisatie staat garant voor het leveren van onderwijs en les- en onderzoeksmateriaal voor duizenden betrokkenen. De organisatie wil bijdragen aan een gezonde, vrije wereld met gelijke kansen voor iedereen. Binnen de teams hangt een open en collegiale cultuur met veel aandacht voor een prettige en sociale werksfeer.

Bekijk vacature »

Delphi Programmeur

Functie omschrijving Onze opdrachtgever is gespecialiseerd in kantoor-bedrijfssoftware en zit gevestigd in omgeving Numansdorp. Als programmeur ben jij bij dit bedrijf met het volgende bezig; Je vertaalt technische en functionele ontwerpen naar kwalitatieve software. Je ontwikkelt, ontwerpt en test software. Je maakt daarbij veel gebruik met de volgende tools & technologieën: Delphi 10.3 (Rio), QuickReport 6. Je krijgt in deze rol veel vrijheid en verantwoordelijkheid. Je levert projecten van A - Z op, en werkt daarbij projectmatig en gestructureerd. Bedrijfsprofiel Dit bedrijf richt zich op maatwerk software oplossingen. Deze software oplossingen worden ingezet in de financiële branche. Het betreft een

Bekijk vacature »
Ozzie PHP

Ozzie PHP

15/04/2014 21:48:39
Quote Anchor link
Hi guys,

Ik wil graag duidelijkheid. Een tijdje terug zei iemand op het forum dat een User class niet zelf mag valideren of de gegevens van een User geldig zijn. Functies moeten gescheiden blijven en het controleren van persoonsgegevens is niet de taak van de User class.

Oké, prima. Stel we hebben een User class waarin ik iemands voornaam wil setten:

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

$user
= new User();
$user->setFirstName('Ozzie');

?>

We hadden dus besloten dat de User class niet mag valideren of Ozzie een geldige naam is. Maar hoe moet die naam dan gevalideerd worden?

Ik ben een beetje de weg kwijt...
Gewijzigd op 15/04/2014 21:49:01 door Ozzie PHP
 
PHP hulp

PHP hulp

28/12/2024 22:29:52
 
Wouter J

Wouter J

15/04/2014 22:03:20
Quote Anchor link
Gelukkig kun je altijd terug kijken op je recente topics en dan zie je na 10 topics ofzo dit topic staan: http://www.phphulp.nl/php/forum/topic/verificatie-veiligheid/94423/

En hela, daar worden wel 3365 tekens "verspilt" (zo lijkt het wel) aan dit onderwerp. Dat is van 10 dagen geleden, ik zou het jammer vinden als je dat al niet meer weet/niet meer kan terug vinden...
 
Ozzie PHP

Ozzie PHP

15/04/2014 22:12:54
Quote Anchor link
Thanks Wouter... maar ik bedoel meer een globale aanpak...

Wie doet wat, en hoe. Moet ik met 2 classes werken? Een UserValidator en een User? Of stop ik toch alles in de User class? Waar hoort die validatie thuis?

Ik ben gewend om alle validatie in de class zelf te stoppen. Een tijdje terug zei iemand hier dat dat niet de bedoeling is. En ergens snap ik dat ook, want als ik gegevens uit de database haal en in de User class stop, worden ze telkens opnieuw gevalideerd. Maar waar voer ik die validatie dan wel uit?

Gebruik ik bijv. de setters van de User class en stop ik de User class vervolgens in een validator?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$user
= new User();
$user->setName('Ozzie');
$validator = new UserValidator($user);
$validator->validateUser();
?>

Moet ik me zoiets voorstellen? Of is dat helemaal de verkeerde gedachte? Ik hoop dat iemand een duwtje in de juiste richting kan geven.

Deze vraag geldt overigens niet alleen voor een User class, maar voor alle classes waarbij data gecontroleerd moet worden. Waar hoort die controle van de data thuis? In de setters, of in een Validator class?
Gewijzigd op 15/04/2014 22:14:17 door Ozzie PHP
 
Reshad F

Reshad F

15/04/2014 23:25:39
Quote Anchor link
Ozzie wat dacht je van

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

$objValidator
= new Validator($rules, $message);
 
if(!$objValidator->isValid($data))
{

  // gooi foutmelding terug
}
else
{
 // save user
}
?>


Heb je er wel is over nagedacht met een bestaand groot framework te werken? dan zou je zulke vragen direct kunnen opzoeken in de framework als je ziet hoe ze het daar doen.
 
Ozzie PHP

Ozzie PHP

15/04/2014 23:44:51
Quote Anchor link
Reshad, dankjewel voor je reactie. Maar hoe vertaal jij deze opzet dan naar de concrete invulling van een User object vraag ik me af.

Dus even heel simpel gezegd. Ik wil een User object maken met jouw voornaam daarin. Normaal gesproken deed ik dan dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$user
= new User();
$user->setFirstName('Reshad');
?>

Hoe zou dit simpele voorbeeld er dan uitzien als je gebruik maakt van een Validator?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

16/04/2014 00:08:56
Quote Anchor link
Ozzie,

Je doet toch ook geen vuile was in je droogtrommel?

voordat je een variabele gaat opslaan (ook in een entity zoals User) ga je zorgen dat deze 'clean' is.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
------------------                ------------------               ------------------
|                |  Vuile data    |                |  Schone data  |    OPSLAAN     |
|  BUITENWERELD  |--------------->|   ONTSMETTEN   |-------------->|                |
|                |                |                |               |   TOEPASSEN    |
------------------                ------------------               ------------------
 
Ozzie PHP

Ozzie PHP

16/04/2014 00:17:44
Quote Anchor link
Frank, dankjewel voor je reactie.

Ik snap wat je bedoelt, en ik ben blij met je tekening :)

Als ik je dus goed begrijp "ontsmet" je de data vantevoren en geef je 'm dan door aan de User class.

Oké... maar wat doet de setter van de User class dan? Doet die enkel dit?

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

?>

Is dat alles?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

16/04/2014 00:22:19
Quote Anchor link
in 99% van de gevallen ja.

Je mag nog kleine modificaties toepassen maar nog een error teruggeven is er niet meer bij en de data is schoon.

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

?>
Gewijzigd op 16/04/2014 00:31:12 door Frank Nietbelangrijk
 
Wouter J

Wouter J

16/04/2014 00:23:22
Quote Anchor link
Ja, de setter zal niet veel belangrijks doen. Validating gebeurd er immers buiten.

Hoe je het precies invult ligt aan de klemtoon. Je kan, zoals frank, eerst de data valideren en dan pas in het object stoppen. Ik ben meer voor de JSR Bean methode: Het valideren van een object state. In plaats van het valideren van elke aparte waarde valideer je de "state" (weet het nederlandse woord even niet) van het object op een bepaald moment.
 
Reshad F

Reshad F

16/04/2014 00:24:07
Quote Anchor link
Ja. Wat Frank heeft geschetst dat is wat ik in code heb laten zien.

Als je valideert dan ga je ervanuit dat de data erin al "schoon" is zoals Frank het noemt. Je Validator kan als dit niet van toepassing is een error teruggeven.

@Wouter Toestand?
Gewijzigd op 16/04/2014 00:24:40 door Reshad F
 
Ozzie PHP

Ozzie PHP

16/04/2014 00:31:05
Quote Anchor link
Allright, thanks.

Je accepteert dus het feit dat een (hele domme) programmeur dit zou kunnen doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$user
->setFirstName(false);
$user->setFirstName(12);
$user->setFirstName('<script>I\'m evil!</script>');
?>

Anders gezegd, je gaat er dus vanuit dat een programmeur weet wat er verwacht wordt en gaat zijn code dus niet controleren?

Nu hebben jullie het dus over validatie. Nu wil ik dat een voornaam een string is, en minstens 1 letter. Oké, de code hiervoor hoef ik niet te weten, maar ik ben wel benieuwd op welke plek je dit bepaalt, en waar je die variabele controleert.

Ik heb van Wouter al eens een voorbeeldje gezien, dus ik ben vooral benieuwd naar hoe Reshad en Frank dat aanpakken. Dus stel je hebt ergens een formulier waar iemand z'n naam invult, waar wordt dan die naam gecontroleerd? Heeft een User class bijvoorbeeld z'n eigen UserValidator class?
Gewijzigd op 16/04/2014 00:31:43 door Ozzie PHP
 
Frank Nietbelangrijk

Frank Nietbelangrijk

16/04/2014 00:43:22
Quote Anchor link
Nee ik gebruik geen UserValidator maar ik gebruik:

- emailValidator
- dutchPostcodeValidator
- integerValidator
- decimalValidator
- isAlphanumericValidator
- passwordValidator

Ze zijn allemaal extended van de Validator class en Validator interface en ze hebben allemaal de public method validate(). Ze kunnen al dan niet een constructor hebben voor initialisatie. (bijvoorbeeld voor minimale lengte van de string)
 
Ozzie PHP

Ozzie PHP

16/04/2014 00:51:29
Quote Anchor link
Ah, oke... op die manier. Thanks Frank. En dit zijn dus allemaal losse classes?

Maar als ik het dus goed begrijp vang je ergens je POST data op, en dan doe je zoiets?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$email_validator
= new emailValidator();
$email_validator->validate($_POST['mail']);
?>

En geeft die validate method dan een boolean terug? Of gooi je een exception vanuit de validate method?

En welke van deze validators gebruik je om iemands voor- of achternaam te controleren?
 
Jordi Kroon

Jordi Kroon

16/04/2014 02:37:25
Quote Anchor link
Ik gooi de post data die ik wil valideren door een algemene validator class. Door middel van rules check ik of mijn post data voldoet aan mijn eisen.

Op deze manier:
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
<?php
    $form
= new FormHandler;
    if ($form -> isMethod('post')) {

        $fields = $form -> getFields(array('firstname', 'lastname', 'email'));
        $validator = new FormValidator($fields);

        $validator -> rule('required', array('firstname', 'lastname', 'email'));
        $validator -> rule('email', 'email');

        if (!$validator -> validate()) {
            print_r($validator -> getErrors());
        }
else {
            $user = new User;
            $user -> setFirstname($fields['firstname']);
            $user -> setLastname($fields['lastname']);
            $user -> setEmail($fields['email']);
            //....
        }
    }

?>
Gewijzigd op 16/04/2014 02:38:21 door Jordi Kroon
 
Ozzie PHP

Ozzie PHP

16/04/2014 10:45:48
Quote Anchor link
Dankjewel voor je voorbeeld Jordi!

Die getErrors() method, wat geeft die dan terug? Geeft die foutmeldingen voor de bezoeker terug, dus bijv.

"U heeft geen voornaam ingevuld."

Of geeft ie enkel de de namen van de velden terug die niet goed zijn ingevuld?

Oh ja, ik zie dus dat je aangeeft dat die 3 velden verplicht zijn, maar controleer je ook of de voor- en achternaam een x aantal tekens bevatten en uitsluitend letters?
 
Wouter J

Wouter J

16/04/2014 11:01:12
Quote Anchor link
>> En geeft die validate method dan een boolean terug? Of gooi je een exception vanuit de validate method?

Is het een uitzondering dat de validate method een invalide waarde krijgt? Nee, want dat is juist wat hij moet doen. Dus geen exceptions gebruiken.
Wil je meer weten dan alleen valide/invalide (true/false)? Ik vind van wel, bijv. de error message, wat er precies fout is en welke rule/constraint er fout is gegaan. Ik zou je eigen error system gaan maken en een ErrorCollection teruggeven. Deze is empty als de waarde valide is en bevat Error objects wanneer de waarde invalide is.
 
Ozzie PHP

Ozzie PHP

16/04/2014 11:07:16
Quote Anchor link
>> Is het een uitzondering dat de validate method een invalide waarde krijgt? Nee, want dat is juist wat hij moet doen. Dus geen exceptions gebruiken.

Helder.

>> Ik vind van wel, bijv. de error message, wat er precies fout is en welke rule/constraint er fout is gegaan.

Oké. En dat "wat er precies fout is" heb je het dan over foutcodes, of heb je het dan over de foutmeldingen richting de gebruiker "uw e-mailadres is niet geldig"?

Verder valt het me nog op dat Frank gebruik maakt van verschillende validator classes. Eén class om één ding te valideren, bijv. een emailValidator. In het voorbeeld hierboven van Jordi, zie ik dat hij juist slechts één validator gebruikt met verschillende rules. Heeft een van beide aanpakken de voorkeur?
 



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.