Vreemde programma constructie zonder return

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Front End Developer

Do you have at least 5 years experience with Front End development? Are you ready for a new challenge and do you love to work with the newest technologies in an innovative environment? Then this role as Front End Developer might be of interest to you. A growing company in Amsterdam, in the automation technology, is hiring a: Senior Front End developer - Amsterdam Summary: This is an excellent job opportunity for a Senior Front End developer who is ready for the next challenge in his or her career. You will be working at an innovative, successful and rapidly growing

Bekijk vacature »

Senior Technisch Applicatiebeheerder

Voor de afdeling ICT zijn wij op zoek naar enthousiaste kandidaten voor de functie van: Senior Technisch ApplicatiebeheerderM/V Functie-inhoud: Als Senior Technisch Applicatiebeheerder maak je deel uit van de afdeling ICT, bestaande uit 9 medewerkers. Je bent verantwoordelijk voor het technisch functioneren van diverse bedrijfsapplicaties. Jouw voornaamste taak zal bestaan uit het implementeren, testen en in bedrijf stellen van (nieuwe) applicatieonderdelen/software. Daarnaast onderhoud je het contact met de leverancier. Samen met key-users en functioneel beheerder, onderzoek en analyseer je de vraag vanuit de business units. De functionele wensen vertaal jij naar de technische oplossing zodat deze past in de technische

Bekijk vacature »

Lead Frontend Developer VueJS Scrum Innovation Qua

Functieomschrijving Ben jij een Front End Developer die toe is aan de volgende stap in zijn/haar carrière? Werk nauw samen in een Scrumteam en bouw aan innovatieve ontwikkelingen met VueJS!! Allereerst ga je de nieuwe omgeving eigen maken middels eigen analyse, sparringsessies met collega's, gebruikers en stakeholders zodat je op korte termijn beschikt over de belangrijkste domeinkennis; Met jouw frisse kijk op het huidige applicatielandschap maak je jouw bevindingen bespreekbaar en ga je eventuele aanpassingen in de toekomstige ontwikkelingsplannen verwerken met het hoofd software ontwikkeling; De uitdagingen waar jij nodig voor bent, bevinden zich op het gebied van front-end development,

Bekijk vacature »

Medior/Senior Python Developer rol met veel impact

Functieomschrijving Als Python Developer in dit internationale team ga je aan de Backend van de mobile en webapplicaties werken. Wanneer je ook aan de Frontend wil werken, dan ben je hier vrij in. Zelfstandigheid, teamwork en het durven nemen van beslissingen zijn belangrijk in deze rol. Je moet zelfstandig een goede technische opzet kunnen maken en daarnaast kunnen overleggen met het team over de volgende te nemen stappen. Je krijgt een ruime mate van vrijheid waar je op basis van richtlijnen de Backend kunt ontwikkelen. In de Backend werk je hier met grote Data sets en ben je met het

Bekijk vacature »

Sharepoint Developer - zeer goede voorwaarden!

Functieomschrijving Als Sharepoint specialist kom je terecht in een functie met veel vrijheid. Jij bent straks het aanspreekpunt binnen de organisatie als het gaat om Sharepoint. Op het Sharepoint-platform zijn meerdere interne applicaties gebouwd, dus je komt aan verschillende projecten te werken. Iedere ochtend bepaal jij voor jezelf (of indien nodig in overleg met collega's) welke problemen/taken prioriteit 1 zijn, zodat je daar als eerste mee aan de slag kan gaan. Vervolgens werk je een lijst af, zodat alle taken aan bod komen. Natuurlijk komen hier af en toe spoedopdrachten tussendoor, dus je moet gestructureerd en onder druk kunnen werken.

Bekijk vacature »

Senior Java Developer vacature

Jij volgt ontwikkelingen op de voet. Sterker nog: jij bent er onderdeel van. Jij loopt voorop. Jij denkt met klanten mee en helpt hen innoveren. Zo kun jij een bijdrage leveren aan de Rabobank-app, de beveiliging van treinen voor Pro-rail verbeteren of de website van ING een boost geven. Vergaderen? Liever gewoon zorgen dat het werkt! Hoe omschrijft men een Sogetist? Gedreven, resultaatgericht en niet snel tevreden. Wat niet wil zeggen dat je nooit met hem of haar kunt lachen. Integendeel. Plezier hoort wat ons betreft net zo goed bij werken. Maar we gaan op de eerste plaats voor de

Bekijk vacature »

Senior Front-end Developer vacature

Jij weet wat er nodig is. Jouw hart gaat sneller kloppen van techniek. Jij wil vooruit. Ben jij de Front-end Developer die we zoeken? Je bent creatief, thuis in gebruikersinteractie en een gedreven engineer in hart en nieren. Daarnaast heb jij een klantgerichte en proactieve houding. Precies de kwaliteiten die een Front-end Developer nodig heeft. Wat doe je als Developer? Als Front-end Developer werk je aan de technische realisatie van front-end (web)applicaties in de verschillende uitdagende opdrachten voor Sogeti’s klanten. Dit kan zowel op klantlocatie zijn, als binnen het Center of Excellence van Sogeti. Jij houdt van het uitdenken en

Bekijk vacature »

(SENIOR) MANAGER SAP ADVISORY – FINANCE

(SENIOR) MANAGER SAP ADVISORY – FINANCE 13th month pay & Holiday allowance Bonus Program 26 holidays Training & Learning opportunities Laptop & Smartphone 32-40 hours p.w. Are you a trusted SAP Technology Consulting Manager to the world’s leading retail, travel, life sciences, industrial & consumer goods organizations ? Bring your vision to life and help the Products industry adapt to the changing world of business by building innovative solutions through insight. Join our Accenture Consulting practice and transform your ideas into reality. Your job The SAP Advisory (Senior) Manager is a key player in all upcoming Digital SAP programs within

Bekijk vacature »

Java Developer

Java Developer - Overheid PositionDescription: Heb jij een passie voor technologie en ben jij altijd al eerste op de hoogte van ontwikkelingen en innovaties? Weet jij hoe je de verbinding moet maken tussen business en techniek bij onze klanten binnen de overheidssector? Wat ga je doen? Als Java developer bij CGI ga je deel uitmaken van de grootste en meest actieve JAVA community van Nederland. Je wordt daar opgenomen in een team van Developers en levert een bijdrage aan de technische realisatie van complexe systemen voor onze klanten. Hierbij maak je in eenvoudige taal aan een klant duidelijk welke softwareoplossingen

Bekijk vacature »

Informatie Analist

Informatie Analist - Overheid & Onderwijs PositionDescription: Help jij onze klanten in de publieke sector bij het doorgronden en oplossen van uitdagende en complexe vraagstukken? Heb jij ervaring in het werken op het snijvlak van business en IT? Beschik jij over de nodige kennis van (de nieuwste) informatiesystemen om te kunnen sparren binnen DevOps-teams? Wat ga je doen? Als Informatie Analist help je onze klanten hun doelstellingen te realiseren door het uitvoeren van analyse en ontwerpen. Je bent onder meer betrokken bij het inrichten en implementeren van nieuwe IT oplossingen, het reduceren van kosten en risico’s, het optimaliseren van bedrijfsprocessen

Bekijk vacature »

Java Developer (DevOps) - English

JAVA DEVELOPER (DEVOPS) - ENGLISH Ref. number 19-0426 Region Rotterdam Description ICT/Internet Salary Depends on experience Language(s) required English Start date ASAP Contract info Recruitment Duration 1 year with view to extension Our international client is building their DevOps centre in Rotterdam, the Netherlands. Do you want to be part of this new exciting and innovative team as a Java Developer? Our client creates innovative and fail safe solutions for their customersusing state-of-the-art methods and tools. Wereally want tospeak with you and tell you in a personal call all about this greatposition. Our client has an equal opportunity policy and

Bekijk vacature »

Business Intelligence Developer vacature

Jij ben niet bang om hard te werken. Uitdagingen zijn welkom. En problemen? Die zijn er om opgelost te worden of, nog beter, om voorkomen te worden! Voor jij aan de slag gaat met het ontwerpen van BI- en DWH-oplossingen, leg je eerst je oor te luister bij de klant. Zo weet jij wat de klant wil, en hoe jouw ontwerp eruit moet komen te zien. Simpel! Althans… met jouw Developer-kwaliteiten wel! Over deze BI vacature Als Business Intelligence Developer ga je zowel op locatie bij de klant aan de slag, als op een van de Sogeti-locaties. Je analyseert de

Bekijk vacature »

Java Developer

Java Developer 40 hour Rotterdam For an international company based in Rotterdam, I am looking for a strong all-round Java Developer who likes to work on new API's and the architecture of the solution. The client is a global leader in their field of expertise. Job description The client is looking for an experienced Java Developer who is looking for a challenging and unique opportunity. You have the opportunity to become a member of the IT Development team focussing on logistics. As part of this team, you will focus on the development and integration of customer facing application using cutting-edge

Bekijk vacature »

CMS Developer / Sitecore / C# / DevOps

Functieomschrijving Ben jij een Developer met kennis van C# / .NET en wil jij je graag specialiseren op het gebied van Sitecore? Doe jij dit het liefst binnen een gerenommeerde organisatie in de zorg? Dan is dit dé uitdaging voor jou! Binnen deze rol zal jij je als C# / .NET Developer (met de focus op Sitecore) gaan richten op het ontwikkelen van webapplicaties, platformen en portalen middels o.a. C#, Azure en Microservices die door duizenden mensen gebruikt worden? Reageer dan nu! Het ontwikkelen van webapplicaties, platformen en portalen middels o.a. C#, Sitecore, Azure en Microservices; Het leveren van jouw

Bekijk vacature »

Java Custom Software Developer

Jouw rol Als Java developer houd jij van uitdagende maatwerk oplossingen. Het liefste bouw je aan aan complexe en grootschalige oplossingen. Laatst zag je bijvoorbeeld nog een slimme oplossing voorbij komen die je graag zou willen uitwerken. Moet je daarvoor nieuwe technologie leren kennen, dan school jij jezelf bij. Soms moet je je collega's en de klant overtuigen om jouw idee te omarmen. Als jij dan het door jou aangebrachte idee ziet draaien dan kijk jij er alweer naar uit om de volgende oplossing te bouwen. Plaats in de organisatie Binnen onze Custom Software Development practice (CSD) werken we gezamenlijk

Bekijk vacature »
Kurt Blom

Kurt Blom

18/10/2019 15:37:58
Quote Anchor link
Hallo allemaal,

Ik kwam bij het uitspitten van een PHP bibliotheek (meer bepaald de form_validation library van CodeIgniter 3.1.11, zie https://github.com/bcit-ci/CodeIgniter/blob/develop/system/libraries/Form_validation.php, lijn 493) volgende constructie tegen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
empty($this->validation_data) && $this->_reset_data_array($_POST);

Ik snap niet wat deze lijn code doet (er wordt immers geen return gedaan van de conditie). Kan iemand mij hierbij helpen dit te interpreteren?

Bedankt!

Kurt

Edit:
UBB-tags gefixxed. Opmaakcodes werken hiet met blokhaken. Zie ook de Veelgestelde Vragen.
Gewijzigd op 18/10/2019 15:58:05 door - Ariën -
 
PHP hulp

PHP hulp

19/11/2019 04:39:21
 
Rob Doemaarwat

Rob Doemaarwat

18/10/2019 16:14:04
Quote Anchor link
Volgens mij staat hier effectief gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(empty($this->validation_data)) $this->_reset_data_array($_POST);
Het tweede deel van de && wordt nl. alleen uitgevoerd als de 1e true geeft.

Geen idee waarom dit zo "cryptisch" is gedaan. Misschien schrijft de coding standard accolades voor en had het dan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
if(empty($this->validation_data))
{
  $this->_reset_data_array($_POST);
}
moeten worden - en had de auteur geen zin in die 3 extra regels?
Gewijzigd op 18/10/2019 16:15:20 door Rob Doemaarwat
 
Thomas van den Heuvel

Thomas van den Heuvel

18/10/2019 16:23:28
Quote Anchor link
Waarschijnlijk wordt hier gebruik (misbruik?) gemaakt van lazy evaluation.

Stel dat je het predikaat (het Boolse statement) A && B hebt. Het resultaat van A && B is alleen true als beide delen, zowel A alsook B, true zijn. Bij lazy evaluation wordt in beginsel enkel het eerste deel geïnspecteerd. Immers, als A ongelijk is aan true (oftewel false), dan kan A && B nooit true opleveren en je hoeft dan dus B ook niet te inspecteren (of uit te voeren).

PHP valideert op deze manier Boolse statements. Het bovenstaande is equivalent aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (empty($this->validation_data)) {
    $this->_reset_data_array($_POST);
}

?>


In dit geval is het waarschijnlijk "gewoon" een verkorte schrijfwijze van het bovenstaande, maar je hebt interessantere toepassingen van lazy evaluation als de operaties mogelijk "duur" zijn. Je zou dan zoiets kunnen doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<goedkope operatie> && <dure operatie>

De <dure operatie> (CPU, geheugen) wordt dan niet uitgevoerd als <goedkope operatie> false teruggeeft.

Maar voor hetzelfde geld gebruik je dus een if-statement. Indien dan mogelijk is. De &&-constructie zou je bijvoorbeeld kunnen gebruiken in query-optimalisatie door de goedkope condities vooraan te zetten in je WHERE-statement.

Op eenzelfde wijze werkt lazy evaluation voor ||. Indien in A || B het eerste deel (A) true is, dan maakt het niet uit wat voor waarde B heeft, het resultaat is dan toch true, dus ook dan wordt B niet geïnspecteerd (noch uitgevoerd).
Gewijzigd op 18/10/2019 16:41:26 door Thomas van den Heuvel
 
Kurt Blom

Kurt Blom

18/10/2019 16:44:21
Quote Anchor link
Beste Rob, Thomas, bedankt voor jullie leerrijke reactie! Had ik nog nooit van gehoord...
 
Thomas van den Heuvel

Thomas van den Heuvel

18/10/2019 17:00:28
Quote Anchor link
Voorbeeldje:
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
22
23
24
25
26
27
28
29
30
31
32
33
<?php
// https://www.phphulp.nl/php/forum/topic/vreemde-programma-constructie-zonder-return/103138

function executeA($in) {
    if ($in) {
        echo 'A';
    }
else {
        echo 'not A';
    }

    return $in;
}

function
executeB($in) {
    if ($in) {
        echo 'B';
    }
else {
        echo 'not B';
    }

    return $in;
}


$a = true;
$b = true;

executeA($a) && executeB($b); // levert AB
echo '<br>';
executeA($a) || executeB($b); // levert A - vanwege lazy evaluation, executeB() wordt niet uitgevoerd
echo '<br>';
$a = false;
executeA($a) && executeB($b); // levert not A - vanwege lazy evaluation, executeB() wordt niet uitgevoerd
echo '<br>';
executeA($a) || executeB($b); // levert not AB
?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/10/2019 17:15:41
Quote Anchor link
Alles goed en wel maar dat soort grappen maken je code niet bepaald leesbaarder.

Zo kom je soms ook van die rare if statements tegen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$a
= '';

if(!empty($a) === true) {
    echo 'not empty';
}
else {
    echo 'empty';
}

?>

Terwijl dit hetzelfde doet
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(empty($a)) {
    echo 'empty';
}
else {
    echo 'not empty';
}

?>

Soms zit een programmeur ook even zonder koffie ;-)
Gewijzigd op 18/10/2019 17:55:41 door Frank Nietbelangrijk
 
Thomas van den Heuvel

Thomas van den Heuvel

18/10/2019 17:33:04
Quote Anchor link
Frank Nietbelangrijk op 18/10/2019 17:15:41:
Zo kom je soms ook van die rare if statements tegen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$a
= '';

if(!empty($a) === true) {
    echo 'not empty';
}
else {
    echo 'empty';
}

?>

Sja, maar dat soort fratsen kun je zelf makkelijk voorkomen door je te bedienen van simpele programmeerprincipes, zoals jij ook doet:
- het is vaak niet nodig om expliciet te vergelijken met Boolse waarde (=== true, === false)
- als je de conditieblokken kunt inverteren zodat je een negatie (!) kunt vermijden dan zou je dat moeten doen

Wat dat betreft is de "A && B" constructie nog redelijk clean, maar je moet wel weten wat voor implicaties dit heeft icm lazy evaluation.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/10/2019 18:02:07
Quote Anchor link
Precies Thomas. Soms komt het else gedeelte wat later en dan moet je het gewoon omdraaien.

Over die boolse waarden daar heeft ook iedere programmeur blijkbaar zijn eigen voorkeur in. Voor mij zou
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if(empty($a) ?>
ook prima zijn. Wat wel een klein voordeel heeft is de true of false links in de conditie te plaatsen. Je krijgt dan een parse error als je per ongeluk een = (assignment) in plaats van een == of === gebruikt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(true = $banaan) { // PARSE ERROR
?>
 
Thomas van den Heuvel

Thomas van den Heuvel

18/10/2019 19:46:54
Quote Anchor link
Mja maar het grappige van die ezelsbrug is weer dat, op het moment dat dat voor jou een tweede natuur is, je dat ook niet meer fout doet. Dus dan heb je in principe die Yoda-statements ook niet meer (expliciet) nodig.

Wat mij betreft hebben functies/constructs die (vaak door naamgeving) al min of meer impliceren dat ze een Boolse waarde retourneren niet nog een expliciete vergelijking met een Boolean nodig, tenzij je maar één case hebt (en geen else-deel) die interessant is.

En in dat opzicht is het misschien ook weer beter om een expliciete vergelijking te doen met false in plaats van een negatie (!) ofzo. Een uitroepteken zie je snel(ler) over het hoofd.

Of wanneer return-values ten onrechte tot de verkeerde Boolse waarde kunnen evalueren (omdat PHP het niet zo nauw met types neemt) als dat niet de bedoeling is.

Er zijn altijd uitzonderingen op regels :).
 



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.