Vreemde programma constructie zonder return

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Anaplan Developer

Dit ga je doen What are you going to do: Picking up Stories: Design planning had, how are we going to build it in Anaplan; Talking to the end user to build a forecasting model; Having contact with the data team about which data is needed; Being able to convert an Excel sheet into a 3, 4 or 5 dimensional modeling environment; Giving knowledge sessions about Anaplan; Solving incidents; Making instructional videos on how teams should read forecasts; Writing blogs about forecasting. Hier ga je werken We are looking for an Anaplan Builder to deliver end-to-end solutions within a big

Bekijk vacature »

Full stack developer

Functie Binnen een ontzettend stimulerende werkomgeving kom jij te werken in een software team van 14 developers. Met ontzettend stimulerend bedoel ik een modern pand, wat voorzien is van alle nodige soft- en hardware, zodat jij jouw werk goed kan uitvoeren. Daarnaast zitten ze in een bos, waardoor je in een groene omgeving rustig kunt werken. Het team bestaat uit front end, back end en full stack developers. Jij krijgt dus de keuze hier waar jij jezelf het liefst op zou richten, maar de voorkeur gaat uit naar back end. Er wordt hier Scrum (agile) gewerkt in multidisciplinaire teams met

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 »

SQL Database Ontwikkelaar

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je houdt je bezig met het ontwerp en de ontwikkeling van MS SQL server databases, dit doe je met T-SQL als programmeer laag. De begeleiding van projecten van A tot Z, je zult aansluiten bij meetings met

Bekijk vacature »

Junior .NET developer

Functie Wij hebben drie scrumteams. Het eerste team focust zich op het stukje hardware wat wij in huis doen. Zij maken als team o.a. gebruik van C++. De andere twee scrumteams zijn allebei bezig met data verwerking en maken hierbij in de backend gebruik van C# .NET / .NET Core. Het verschil tussen deze teams is dat één team de data verwerking doet voor de mobiele applicatie. Zij werken hierbij dus ook met Xamarin. Het andere team focust zich op de webapplicaties en maakt hierbij ook gebruik van ASP.NET MVC. Op basis van jouw ambities en kwaliteiten kijken wij samen

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Junior .NET developer

Functie Jij hebt natuurlijk net jouw Bachelor op zak en gaat nu voor het eerst aan de slag bij een werkgever als junior .NET ontwikkelaar. Waarschijnlijk lijkt het jou spannend om ineens aan de slag te gaan bij klanten in de consultancy. Maak je niet druk, jij komt hier terecht in een warm bad en wordt totaal niet in het diepe gegooid. Zodra jij hier begint wordt jij gekoppeld aan een persoonlijke manager met een persoonlijk ontwikkelplan. Jij krijgt een scala aan trainingen, denk aan trainingen ten behoeve van het opdoen van zelf kennis en gedragscompetenties, maar ook trainingen voor

Bekijk vacature »

Productontwikkelaar Food

Wat ga je doen Als Productontwikkelaar Food ga je nieuwe producten ontwikkelen en bestaande producten verbeteren. Je bent hierbij betrokken bij het gehele proces: van productconcept naar proefreceptuur, het realiseren va het product (op kleine schaal) en het testen van producten in een productieomgeving. Verder: Bewaak je de status van verschillende fases van productontwikkeling en lever je tijdig de benodigde data aan Ben je bezig met de optimalisatie van oude en nieuwe recepturen Begeleid of organiseer je proefsessies (sensorisch onderzoek) in het team en/of bij klanten Onderhoud je contacten met de klanten, leveranciers van grondstoffen e.a. externe partijen Houd je

Bekijk vacature »

Java (Java EE) Developer

In het kort Werken als Java developer betekent werken aan complexe IT projecten bij onder meer een internationaal containeroverslag bedrijf. Zo sturen we apparaten en eindgebruikers aan d.m.v. onze custom-made software oplossing, die dagelijkse vele duizenden containers verwerkt. Denk aan systemen die volautomatische kranen aansturen en op afstand bedienen, de volledige afhandeling van containernummerherkenning bij het laden en lossen van zeeschepen of het tonen van instructies aan de chauffeurs van ruim 300 straddle carriers. En dat allemaal redundant, robuust en in een dynamische 24/7 omgeving! Jij versterkt ons ontwikkelteam en gaat aan de slag met oa. Java i.c.m. Spring (Boot),

Bekijk vacature »

PHP back-end developer gezocht!

Functie Werk je liever zonder druk en keiharde deadlines maar met de focus op kwaliteit? Dan kom je hier op de juiste plek terecht! In Het team bestaat momenteel uit 12 developers, hiernaast werken er collega’s van front-end, UX maar ook marketing/sales en support. In iedere sprint ontwikkel je samen functionaliteiten met als uitdaging om de klanten de beste gebruikerservaring te bieden. Ze bieden een werkplek waar je jezelf kunt blijven ontwikkelen, en mee te werken aan zowel bestaande als nieuwe mogelijkheden. Eisen • HBO werk- en denkniveau (ze kijken niet naar een papiertje) • Je denkt graag mee over

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 »

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 »

PHP Developer

As a PHP Developer at Coolblue, you ensure that our webshops work as optimal as possible. How do I become a PHP Developer at Coolblue? As a PHP 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 are not averse to a little TypeScript or other technologies that might be used. Would you also like to become a PHP Developer at Coolblue? Read below if the job suits you. You enjoy doing this Writing vanilla PHP code. Working with

Bekijk vacature »

Infrastructure Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 12945 Introductie Our client is one of the most innovative companies within the Netherlands. Currently we are looking for an Infrastructure Platform Engineer. Within this role you will be developing the infrastructure. Functieomschrijving Within this role you are responsible in the development of our distributed data and compute platform infrastructure. You will design, develop and implement new features and fixes. Next to this you will integrate and configurate other packages that supports the development of tuning applications within the organisation. You will support customer sites remotely. Design and implement the

Bekijk vacature »

Medior PHP Developer

Functie omschrijving We are looking for a dutch native speaker Wil jij als developer werken bij een interne organisatie en de eigen software verder helpen ontwikkelen? Lees dan snel verder! In deze functie ga je werken als PHP Developer en de interne software en applicaties verder ontwikkelen. In het kort houdt dit in: Je gaat de interne applicaties en software verder optimaliseren. Verder bouw je verschillende API's en koppelingen tussen systemen. Je gaat het CRM-systeem door middel van PHP verder ontwikkelen. Ook ga je collega's ondersteunen bij vragen over de software en applicaties. Bedrijfsprofiel Dit bedrijf is actief in het

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

29/03/2024 14:15:35
 
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.