Vreemde programma constructie zonder return

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

MS SQL Developer Automatisering Miljoenen gebruike

Functieomschrijving Wil jij als SQL Developer aan het werk binnen een van de meest complexe organisaties van Nederland? Wil jij meedenken en werken aan een platform met miljoenen gebruikers? Lees dan snel verder! Functie-eisen Hbo denk - en werkniveau; Minimaal 3 jaar ervaring, bij voorkeur in een soortgelijke functie of doormiddel van stage; Ervaring met SQL Server 2012 of hoger; Ervaring met SQL Server HA techniekene FCI en AG, SQL Native Backup; Ervaring met Windows 2012/2016; Ervaring met PowerShell op het gebied van deployment automation en het automatiseren van processen; Bedrijfsomschrijving Als SQL Developer kom je te werken in de

Bekijk vacature »

C# developer gezocht (distributed systems, SOA, NS

Ben je een C# developer met een oplossingsgerichte mentaliteit en op zoek naar een veelzijdige baan binnen een kleinschalig dynamisch bedrijf, waar je mee kunt denken in het groter geheel? Waar je met mensen komt te werken die betrokken zijn en een gemeenschappelijk gevoel van verantwoordelijkheid hebben? En waar je werkt aan schaalbaarheidsuitdagingen zodat jouw software grote hoeveelheden data kan verwerken? Nieuwsgierig? Lees dan verder! Voor een Rotterdams bedrijf zijn we op zoek naar een enthousiaste, en met name leergierige, full stack developer of een web developer die graag full stack wil worden. Het bedrijf biedt geavanceerde technische oplossingen die

Bekijk vacature »

Systeembeheerder Citrix

Systeembeheerder Citrix De huidige situatie met betrekking tot het virus raakt een ieder in ons land. Het is nogal een grote verandering voor werkend Nederland maar gelukkig blijft de IT zich ontwikkelen. Jij maakt de ontwikkelingen mee en je hebt hard gewerkt om te komen waar je nu staat. Je bent op zoek naar een werkgever die jou naast zekerheid ook flexibiliteit biedt. Daarom werken wij bij T2 samen met jou zodat je de juiste opleidingen en certificaten kan behalen en daar plukken wij samen de vruchten van. Onze samenwerking Hard werken voor en bij T2 om samen het succes

Bekijk vacature »

.NET Developer Zorg-ICT

In een sector waarin de ontwikkelingen op het vlak van zorg-ICT in een stroomversnelling zitten, biedt ChipSoft een ultramodern en ziekenhuisbreed geïntegreerd elektronisch patiëntendossier. Dankzij ons groeiende marktaandeel in België is ChipSoft op zoek naar nieuwe collega’s. Jouw job Je bent verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van jouw eigen module. Het gaat om complexe ICT-producten die feilloos moeten functioneren binnen de zorgorganisatie. Je werkt zowel zelfstandig als in een team. ChipSoft maakt gebruik van een zelf ontwikkeld multi-tier framework. Tijdens een interne opleiding leren wij jou hoe je zelf aan de slag kan binnen deze architectuur. Jouw

Bekijk vacature »

IoT Start-up embedded C developer

Functieomschrijving Onze API stelt grote bedrijven als PostNL in staat om pakketten en boodschappen te bezorgen wanneer u niet thuis bent en zorgt ervoor dat u persoonlijk wordt ontvangen. We zijn op zoek naar een embedded software engineer die verantwoordelijk is voor het ontwerpen en bouwen van een veilige firmware voor onze IoT producten. Je werkt in nauwe samenwerking met drie collega's: een mobiele iOS-ontwikkelaar, een mobile ontwikkelaar voor Android en een ontwikkelaar van elektronica / embedded. Een aantal taken die jij als embedded C developer gaat uitvoeren: - Ontwerp en ontwikkeling van de firmware; - Bouwen van betrouwbare communicatie

Bekijk vacature »

C# Developer/ SQL Server/ Visual Studio/Javascript

Functieomschrijving Ben jij een gedreven en enthousiaste .NET Developer (C#) met gevoel voor design en usability? Wil jij als C# Ontwikkellaar jouw skills graag inzetten op de development afdeling van een innovatieve, flexibele organisatie met een groot bereik? Lees dan snel verder! Je gaat aan de slag in het websites team of portals team waarin je je bezighoudt met concept & design, implementatie en ook een stukje bugfixing en onderhoud; Je werkt met je team volgens de Scrum werkwijze; Zo adviseer je ook de PO & Scrum Master over de technische architectuur, koppelingen en integratie met externe systemen en API’s;

Bekijk vacature »

.NET Developer Zorg-ICT

Complexe software ontwikkelen: dat is jouw ding! Voor onze vestiging in Hoogeveen zoeken wij fanatieke junior en senior .NET Developers die met de laatste Microsoft-tools en -technieken willen werken. Jij bent gemotiveerd en draagt graag verantwoordelijkheid voor je 'eigen' software, die wordt ingezet in ziekenhuizen door heel Nederland. Jouw baan Je bent verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van jouw eigen module. Dit gaat om complexe ICT-producten die feilloos moeten functioneren binnen de complexe omgeving van een zorgorganisatie. Je werkt zelfstandig of in een klein team. ChipSoft maakt gebruik van een zelf ontwikkeld multi tier framework. Tijdens een

Bekijk vacature »

.NET Developer / C# / Microservices / Azure

Functieomschrijving Ben jij een senior .NET Developer en wil jij een bijdrage leveren aan een gezondere wereld door innovatieve software te ontwikkelen? Wil jij werken met de nieuwste technieken zoals C#, Docker en Azure? Lees dan nu verder! Het ontwikkelen van software inclusief vormgeving, implementaties, integraties en testen; Het in kaart brengen van software requirements; Zorgen dat jouw code kwalitatief hoogstaand is; Uitvoeren van risico analyses; Bijdrage leveren aan het continuous quality improvement process. Functie-eisen Minimaal 3 jaar ervaring als .NET Developer; Je hebt ervaring met C#, Azure Devops of TFS; Je hebt ervaring met ASP.NET Core, MVC, Docker en

Bekijk vacature »

Medior/Senior .Net Developer - ERP systeem, meewer

Voor een innovatieve organisatie gespecialiseerd in bedrijfsondersteundende software oplossingen zijn wij op zoek naar een Medior / Senior .Net Developer. De verschillende software pakketen stellen klanten in staat efficient en gemakkelijk projecten te beheren en plannen. Ze zijn marktleider in Nederland en Microsoft Gold Partner, met een sterke focus op innovatie van het platform als hun ontwikkelaars. Jouw rol De IT afdeling, bestaande uit 17 .Net Developers, is onverdeeld in 3 teams. Er wordt een nieuw team opgezet, waarvoor ze een Senior .Net Developer zoeken die kan fungeren als meewerkend voorman/vrouw. In deze positie ben je de kartrekker, je werkt

Bekijk vacature »

Mobile App Developer

Ons Mobile ontwikkelteam zoekt een fanatieke Mobile App Developer. Ben jij creatief en heb je passie voor het ontwikkelen van apps? Dan zijn wij op zoek naar jou! Jouw baan ChipSoft heeft al diverse apps uitgebracht en het aantal gebruikers hiervan neemt snel toe. De apps doen het erg goed bij de zorginstellingen. Je kunt hierbij denken aan apps verpleegkundigen, thuiszorgmedewerkers, de logistieke dienst en - natuurlijk - de artsen zelf. Door jouw hands-on mentaliteit, eigenwijsheid en technisch inzicht kun je nauwkeurig herbruikbare software schrijven. Die software sluit naadloos aan op onze ‘back end’ (HiX, onze ICT-totaaloplossing voor de zorg).

Bekijk vacature »

OutSystems Developer

NOTE! NO Relocation, Only applications from the Netherlands and fluent in Dutch! De vraag vanuit de business is de laatste tijd sterk toegenomen, waardoor het voor onze klant mogelijk is om de nieuwe functie te creëren voor een OutSystems Developer. Deze functie past goed bij een iniatiefnemer die pro-actief vraagstukken ophaalt uit de business en deze o.b.v. zijn/haar expertise verder vorm geeft. Bedrijfsomschrijving NOTE! NO Relocation, Only applications from the Netherlands and fluent in Dutch! Key-Account van Michael Page Een van de grootste retail/supermarktketen gevestigd in 30 landen in Europa Omschrijving NOTE! NO Relocation, Only applications from the Netherlands and

Bekijk vacature »

Medior/Senior Fullstack .Net Developer - CMS &

Voor een grote financiële dienstverlener zijn wij op zoek naar een ervaren Full-stack Software Developer (.Net / C#). Onlangs hebben zij een nieuw CMS systeem in gebruik genomen en is de vernieuwde website online gegaan. Samen met je collega’s van het 8 koppige ontwikkel team, waarvan één andere Full-stack .Net Developer, ga je de portals en websites flink uitbreiden met nieuwe functionaliteit en upgrades in de DevOps omgeving. Hierin werk je veelal met o.a. Sitecore, Unit Testing, CI/CD, TFS, Git, Scrum en JavaScript, HTML en CSS. Je hebt veel vrijheid in je functie en in het meedenken aan de doorontwikkeling

Bekijk vacature »

Salesforce Developer

Ben jij die SalesForce Professional die op zoek is naar het verder ontwikkelen van een nieuw geavanceerd service platform? Wil jij een bijdrage leveren aan ons bedrijfskritische systeem met duizenden gebruikers? Dan heb je wellicht interesse in de positie van: Salesforce Developer 32 - 40 uur Over de positie: Binnen Oranje Groep BV hebben wij een nieuw servicemanagementsysteem. Je bent verantwoordelijk voor het ontwerpen en doorontwikkelen van serviceprocessen, zodat deze van het begin tot het eind optimaal verlopen. Hierbij vertaal je werkprocessen naar softwareoplossingen om tot duidelijke application requirements te komen. Je komt te werken op onze modern nieuw ingerichte

Bekijk vacature »

Software Developer / PHP

Functieomschrijving Werk jij graag in een vooruitstrevende en groeiende organisatie aan een eigen ontwikkeld platform dat door steeds meer bedrijven in Nederland gebruikt wordt? Ligt jouw passie bij software development en heb jij ervaring met PHP? Dan zijn wij op zoek naar jou voor dit bedrijf in regio Eindhoven! Je werkt samen met het ontwikkelteam aan de ontwikkeling van het platform, o.a. met Symfony, Docker, API's en Git; Je denkt mee over verbeteringen, doorontwikkeling en schaalbaarheid van het platform; Je werkt in sprints van twee weken; Je spreekt met diverse betrokkenen om samen een optimaal product neer te zetten. Functie-eisen

Bekijk vacature »

Java Developer / Java 8 / Angular / Docker / Autom

Functieomschrijving Wil jij als Java Developer aan de slag bij een internationaal bedrijf die cutting edge applicaties ontwikkeld voor de automotive branche? Ga je graag aan de slag met technieken als Java 8, Java EE7, Docker, Angular en wil je graag direct een lease auto krijgen? Lees dan snel verder! Ontwikkelen van cutting edge applicaties met o.a. Java 8, Java EE7, Angular en Docker; Verantwoordelijk vanaf het in kaart brengen van requirements tot de daadwerkelijke technische oplossing; Meedenken over architectuur; Assisteren van technische implementaties bij klanten; Overleggen met analisten, testers, architecten en consultants. Functie-eisen Minstens 2 jaar ervaring als Java

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

28/05/2020 04:23:27
 
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.