[oop] validatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Python developer Consultancy

Functie Als Python developer bij deze organisatie werk je voor verschillende klanten. Doordat de oprichter een groot netwerk heeft kun je zelf voorkeuren uitspreken in het type projecten dat je wilt gaan doen. Zo zijn er bijvoorbeeld langdurige of juist korte projecten, maar is ook het type klant, of project bespreekbaar. Werk jij bijvoorbeeld graag aan een nieuw, state-of-the-art web portaal of ben je liever betrokken bij een migratietraject van een bestaande applicatie? Wij gaan voor jou aan de slag! Eisen • Je bent een gedreven developer met sterke voorkeur voor Python • Je bent meer dan een codeklopper •

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET developer begint jouw dag na een bak koffie met een stand up. De vorderingen worden tijdens de stand up besproken en de doelen worden opgesteld waar jullie als team in de volgende sprint naartoe gaan werken. Onze backend is geschreven in .NET Core en onze Front-end in Angular. Bij ons ga jij dan ook Fullstack aan de slag. Jij wordt hier opgeleid om zelfstandig te kunnen programmeren en applicaties te kunnen implementeren. Er wordt op projectbasis gewerkt, dit bied leuke uitdagingen omdat elke klant een andere visie heeft over de applicatie die wij maken. Je gaat

Bekijk vacature »

Fullstack developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Software Programmeur PHP

Functie Wij zijn op zoek naar een PHP programmeur voor een leuke opdrachtgever in omgeving Alblasserdam. Heb jij altijd al willen werken bij een bedrijf dat veilige netwerkverbindingen levert door middel van veilige oplossingen? Lees dan snel verder. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Tevens

Bekijk vacature »

Junior Outsystems developer

Functie Als junior Outsystems developer wordt jij onderdeel van een multidisciplinair team van 23 software engineers. Ons team werkt agile en termen als Continuous Integration en Continuous Delivery zijn bij ons dagelijkse koek. Wij werken aan uitdagende en afwisselende projecten met als doel onze klanten een totaal oplossing aan te bieden. Als junior Outsystems developer krijg jij bij ons de kans om jezelf te ontwikkelen naar een volwaardige ervaren en gecertificeerde Outsystems developer. Jij een team met ervaren mensen (10+ ervaring) om je heen. Zo heb jij niet het gevoel dat jij meteen in het diepe wordt gegooid en uiteraard

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

Junior/medior PHP developer Onderwijssector

Functie Momenteel zijn ze op zoek naar een developer die, veelal fullstack, mee gaat werken aan de 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

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 »

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 »

C#.NET ontwikkelaar

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Je bouwt webshops, webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Framework en C#. Je zorgt voor de optimalisering van bestaande software en de automatisering van

Bekijk vacature »

Software developer

Werkzaamheden voor jou als software developer Voor een goede relatie in de regio Zwolle (meerdere locaties) zoeken wij een software developer die betrokken is bij de ontwikkelcyclus en verantwoordelijk is voor het testen en keuren van nieuwe en geoptimaliseerde software. In deze functie ben je in de implementatiefase de persoon die risico's beoordeelt en intern oplossingen aanbrengt om risico's te verkleinen. Binnen het ontwikkelteam van de software ben je een belangrijke schakel waar je intensief meewerkt met scrum. Het voorkomen van bugs in de programma's en het bevorderen van gebruiksvriendelijkheid voor eindklanten zijn voor jou een uitdaging en geeft voldoening

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 »

Senior Front-End Developer

Als Senior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Senior Front-End Developer bij Coolblue? Als Senior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Senior Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Nadenken

Bekijk vacature »

Belastingdienst - Freelance Senior Applicatie ontw

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 6 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: We verwachten van je, dat je: Brede ervaring hebt als JAVA-ontwikkelaar; Ervaring hebt met Agile/Scrum-werken en je thuis voelt in een Agile omgeving; Een aandeel levert aan het scrumproces en in de SAFe-releasetrain; Zelfstandig werkt in een scrumteam en intensief de samenwerking op zoekt met je directe collega’s en je omgeving; Ervaring meebrengt met het schattten en inplannen van taken tot en met het testen en demonstreren van de opgeleverde functionaliteit; Collega’s in je

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

10/05/2024 06:04:22
 
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.