[oop] validatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

App Developer

Samen werken aan een gezonder Nederland en toekomstbestendige zorg voor iedereen. Dat is de impact die jij kan hebben als App Developer bij VGZ. Wil jij een bijdrage leveren aan een maatschappij waarin iedereen zich thuis voelt? Bekijk dan de vacature. Uit onderzoek van Computable is VGZ verkozen tot ‘beste niet-ICT werkgever voor ICT’ers van Nederland’ Hoe ook jij het verschil maakt Als App developer werk jij aan het belangrijkste communicatiekanaal van VGZ, namelijk de App! Als App developer bij VGZ maak je onderdeel uit van een van onze App-teams. Met een goede mix van kennis en ervaring zet je

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 »

C# .NET Backend Developer HBO Javascript

Samengevat: Deze werkgever is een professionele speler op gebied van IT en E-Commerce. Wil jij werken voor een e-commerce platform? Heb je ervaring met C#, Javascript en Scrum? Vaste baan: C# .NET Developer Backend E-Commerce 3.400 - 4.500 Backend Developer Wij ontwikkelen software voor E-Commerce toepassingen. Ons eigen Content Management systeem biedt een integrale oplossing met diverse ERP software. Onze systemen zijn vaak complex en omvangrijk en draaien bij grote organisaties. Maar ook kleine ondernemingen hebben steeds vaker behoefte aan een vlekkeloos werkende E-Commerce oplossing. Zij bieden een uitdagende werkomgeving met gezellige collega's. Je krijgt veel vrijheid en er is

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

Frontend Developer

Functieomschrijving Voor de NIPV zijn wij opzoek naar een Frontend Developer. Als Frontend Developer ga jij aan de slag om dashboards te bouwen vanuit het datawarehouse. Dit stelt NIPV in staat om snel en eenvoudig bij correcte bedrijfsvoeringsinformatie te kunnen. Je ontwikkelt dashboards in PowerBI, publiceert en onderhoud die, verzameld en verwerkt feedback in overleg met het ontwikkelteam. Naast dashboards ontwikkel en onderhoud je een datamodel in Excel waarmee adviseurs, controllers en analisten in staat worden gesteld om de gegevens uit de dashboards te raadplegen en anders te filteren of bepaalde gegevens nader te verfijnen, zodat verdiepende vragen kunnen worden

Bekijk vacature »

PHP Developer - medior functie

Functieomschrijving Ben jij innovatief en wil jij je kennis graag delen met jouw nieuwe collega's? Lees dan snel verder! Voor een leuke opdrachtgever in de omgeving van Roosendaal zoeken wij een Symfony developer. Of je nou junior, medior of senior bent, je krijgt hier alle vrijheid en verantwoordelijkheid om jouw eigen loopbaan te ontwikkelen. Je gaat je hier bezig houden met en inspelen op de actualiteiten van jouw vakgebied. Techstack: Symfony, PHP, mySQL. Kennis van Svelte is helemaal mooi meegenomen. Bedrijfsprofiel Al sinds '99 is dit webbureau actief. De kernwaarden binnen het bedrijf zijn integer, dienstbaar en deskundig. Je komt

Bekijk vacature »

Back-end Software Developer

Functie omschrijving Ben jij op zoek naar een uitdagende development functie bij een klein gespecialiseerd softwarebedrijf? Wil jij graag hybride werken (combi tussen thuis + kantoor), loop jij warm voor maatwerk software en voel jij je prettig in een informele cultuur? Zoek dan niet verder! Reageer direct! Voor een gewilde werkgever in omgeving Tilburg zoeken wij een back-end software developer met een aantal jaar werkervaring. Je gaat werken voor een klein softwarebedrijf dat gespecialiseerd is in de ontwikkeling van integratiesoftware. Jouw werkzaamheden zien er als volgt uit: In een klein team met 4 ontwikkelaars houd jij je bezig met afwisselende

Bekijk vacature »

Java Programmeur

Functie Heb jij altijd al samen willen werken met ervaren java ontwikkelaars dan hebben wij hier de ultieme kans voor jou! Voor een opdrachtgever in omgeving van Naaldwijk zijn wij op zoek naar uitbreiding van het vaste ontwikkel team. Je zult je hier voornamelijk bezig gaan houden met; Wijzigingsverzoeken van klanten uitvoeren, hier wordt je diep in betrokken; Samen met consultants sluit je aan bij gesprekken met klanten, voor alle projecten; Je schakelt veel met consultants, wat is de behoefte van de klant? Hoe kan je hierop integreren?; Het framework moet naar de Cloud gebracht worden, je wordt betrokken bij

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET ontwikkelaar start jij in ons development team met twee andere .NET developers. Als team werken jullie in scrum en is er iedere ochtend om 11.00 een standup. Jij krijgt als junior .NET ontwikkelaar een inwerk traject dat echt specifiek wordt ingericht op basis van wat jij nodig hebt. Een van de grootste pluspunten bij ons is dat wij binnen ons bedrijf veel (technische) vrijheid geven en juist eigen initiatieven erg stimuleren. Jouw werkzaamheden gaan er bij ons als volgt uit zien: – Het ontwikkelen van nieuwe software samen met interne en eventueel externe ontwikkelaars; – Het

Bekijk vacature »

Front-end Developer

Onze klant is sinds 2 jaar actief als adviseur en bemiddelaar in de verzekeringsmarkt. Sindsdien proberen zij deze slapende markt flink wakker te schudden. Dit willen zij doen door het bouwen van slimme vergelijkers op hun eigen website en die van partners. Het bedrijf wil continu voorop lopen, zodat consumenten eenvoudig de verzekeringen kunnen vinden die het beste bij ze past. Functieomschrijving Als Front-end Developer werk je aan vergelijkingsmodules die consumenten dagelijks gebruiken bij het vergelijken en afsluiten van verzekeringen. Je vindt het leuk om samen te werken met de product owner, bestaande modules te verbeteren en nieuwe vergelijkers "from

Bekijk vacature »

Software Developer C# .NET

Functie omschrijving Software Developer C# .NET gezocht voor een dynamische organisatie! Ben jij net afgestudeerd of toe aan een volgende stap in je maatschappelijke carrière? Lees dan snel verder! Wij zijn op zoek naar een Software Developer die klaar is voor een nieuwe uitdaging en die een organisatie in de regio Houten wil versterken. Je werkt in deze functie aan verschillende projecten en gaat vaak op bezoek bij klanten. In deze functie kun je een grote mate van uitdaging, diversiteit en verantwoordelijkheid verwachten. Bedrijfsprofiel Waar kom je te werken? Je komt te werken bij een organisatie dat gespecialiseerd is in

Bekijk vacature »

(Junior) PHP Ontwikkelaar bij een retail bedrijf i

Bedrijfsomschrijving Ben jij een ervaren PHP ontwikkelaar met een passie voor retail en ICT? Wil jij werken in een team dat zich bezighoudt met het ontwikkelen van uitdagende applicaties voor een groot retailbedrijf in Delft? Dan zijn zij op zoek naar jou! Functieomschrijving Als PHP Ontwikkelaar werk je in een team aan de ontwikkeling van applicaties die door de gehele organisatie worden gebruikt. Je bent verantwoordelijk voor het ontwikkelen, testen en implementeren van deze applicaties. Je werkt hierbij nauw samen met andere ontwikkelaars, projectmanagers en stakeholders binnen de organisatie. Je taken bestaan onder andere uit: Ontwikkelen van nieuwe functionaliteiten en

Bekijk vacature »

Junior/Medior Front-end developer

Functie Als Front-end developer werk je intensief samen met 1 van de UX-designers en denk je mee over de gebruiksvriendelijkheid en design van onze web- en mobile apps. Je bent betrokken bij sessies met gebruikers om designs te valideren en usability van de app-in-wording te testen. Vervolgens gebruik je dit om samen met je team waarin ook back-end (.NET) developers zitten, te zorgen voor de realisatie van de best mogelijke apps voor studenten en docenten. Eisen • Je hebt een hands-on development en coding mind-set en werkt graag aan een high quality code base welke je consequent onderhouden kan worden

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 »

Back-End Web Developer

As a Back-End Web Developer at Coolblue, you ensure that our webshops work as optimal as possible. How do I become a Back-End Web Developer at Coolblue? As a Back-End Web Developer you work together with other development teams to make our webshop work as optimal as possible and to make our customers happy. Although you are a PHP Developer, you also feel confident with setting up microservices in Typescript or are open to learning this. Would you also like to become a PHP Developer at Coolblue? Read below if the job suits you. You enjoy doing this Writing pure

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

27/11/2024 10:52:42
 
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.