Simpel $var check

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java developer Zorgsysteem

Dit ga je doen Werken aan het eigen gebouwde zorgsysteem; Verbeteringen maken en toepassen binnen de applicatie; Jij gaat werken aan de Back-end van de applicatie en sporadisch werk je mee aan de Front-end; Samenwerken met andere teams voor een optimaal resultaat; Jij kan 'clean' werken en high quality code schrijven; Jij werkt resultaatgericht. Hier ga je werken De organisatie houdt zich bezig met diverse applicaties met betrekking tot zorgregistratie. Dankzij hun systeem komt alle informatie, omtrent de zorg van een patiënt, op een overzichtelijke en toegankelijke manier samen in één systeem te staan. Op deze manier is deze informatie

Bekijk vacature »

Integratie Developer / Architect

Dit ga je doen Als Integratie Developer / Architect binnen deze organisatie krijg je echt de kans om impact te maken. De organisatie is groeiende maar houdt een corporate cultuur buiten de deur. Heb je een goede business case: zorg voor goede argumentatie en ga ervoor! Geen stroperig beslissingsproces dat jouw ideeën in de weg staat! Enkele van jouw taken: Je ontwerpt en ontwikkelt nieuwe integraties met behulp van interne tools (Boomi) of externe partners; Je vertaalt functionele specificaties naar technische oplossingen; Je denkt mee over strategische ontwikkelingen op het gebied van applicatie integratie; Je voert regie op leveranciers en

Bekijk vacature »

Junior Fullstack Developer

Functie omschrijving Heb jij je universitair diploma Informatica afgerond en ben jij op zoek naar een startersfunctie waar jouw ontwikkeling in een hoog vaandel staat? Voor een softwarebedrijf in Amsterdam zijn wij op zoek naar een Junior Fullstack Developer. Je begint met een op maat gemaakte training om de kennis bij te spijkeren die jij nog mist. Uiteraard leer je het meeste tijdens je werk, maar de training geeft je hiervoor alvast de juiste handvatten. Je kunt het volgende verwachten! Jij ontwikkelt in technieken als Java, Javascript en SQL. Je werkt hierbij volgens de Agile/Scrum methode; Na het afronden van

Bekijk vacature »

Senior Developer ERP Dynamics 365

Samengevat: Deze werkgever is een softwarebedrijf. Ben jij een enthousiaste developer? Heb je ervaring met ERP of Dynamic 365 bussines central? Vaste baan: ERP Applicatie Specialist ERP MBO €3.600 - €5.200 Wij houden ons als bedrijf bezig met het leveren en implementeren van het Microsoft Dynamics pakket binnen verschillende industriële sectoren. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Binnen ons open team is er een no-nonsense cultuur. Daarnaast is er veel onderling contact door de korte communicatielijnen. Het team werkt enthousiast samen om een

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je hier

Bekijk vacature »

Randstad - Freelance Backend Developer/ Data Engin

Starting date: 10.05.2023 Salary range: €67,00 - €77,00 Duration: 6 months Hours: 40 Working model: Hybrid* MUST be NL based Job description: Our vision is to have a consistent and data driven experience for all sales across all our operating companies. Our mission is to enable our salespeople to be able to reach out to the right company at the right time. We do this by creating data driven micro services and solutions. We mainly focus on implementation in the Google Cloud but also integrate with local systems and other cloud solutions. A typical day: As a back-end developer you

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Junior Front end developer

Functie Jij als developer gaat ons helpen onze producten verder te ontwikkelen en in te zetten in de markt. Op dit moment bestaat ons SaaS product uit 3 componenten die zowel los als in een pakket gekocht kunnen worden. Het gaat hier om een online kaartapplicatie, een workflow tool en een monitoring tool. Momenteel zijn wij 3 jaar geleden gestart met de ontwikkeling. De tech-stack waarmee we werken is voornamelijk Javascript, Vue.js en Python. Daarnaast gebruiken wij FaundaDB als database en werken we veel met GIS applicaties. De uitdaging die we momenteel hebben is dat we momenteel een intern team

Bekijk vacature »

Freelance JAVA / C# Developer

Functieomschrijving Voor een opdrachtgever in omgeving Zoetermeer zijn wij op zoek naar ervaren JAVA of C# Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid

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 (junior functie)

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij een starter en wil je werken bij een jong en leuk bedrijf? Lees dan verder! Wij zijn op zoek naar een PHP Developer binnen een junior functie. Binnen dit bedrijf gaat het om persoonlijke aandacht en ontwikkeling! Je komt te werken voor een leuk communicatiebureau die alles op het gebied van online en offline communicatie doet. Dit doen zij voor verschillende branches, waardoor je aan diverse soorten projecten mag werken, dit maakt deze baan erg leuk! Daarbij werk je aan een door hun zelf ontwikkeld framework welke goed

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe stap? Voor een softwarebedrijf in regio Oosterhout zijn wij op zoek naar een back-end developer met kennis of ervaring met C# en SQL. Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je brengt de aanpassingssuggesties van klanten in kaart, om ze vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten;

Bekijk vacature »

Senior Front-end developer

Functie Als front-end developer ga je aan de slag voor verschillende klanten, waarbij veel rekening wordt gehouden met waar je woont (dit is altijd binnen het uur), en word er gezocht naar een organisatie die past bij jou. Zowel qua persoonlijke ambities als de technische aansluiting. De opdrachten duren gemiddeld 1 à 2 jaar maar dit hangt ook af van je wensen. Je werkt in een teamverband voor een klant en zult nauw samenwerken met zowel eigen collega’s als die bij de klant werkzaam zijn. Ze zijn op zoek naar een technische front-end developer die ruime ervaring heeft in één

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

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 »

Pagina: 1 2 volgende »

Cees S

Cees S

14/02/2015 16:27:00
Quote Anchor link
Vond een snelle (OR) notatie wijze die ik met jullie wil delen.

Normale check bijvoorbeeld
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
<?php
If (isset($var)) {
   $newValue = $var;
}
else {
   $newValue = 'some_value';
}

//normale if short notatie is dan
$newValue =(isset($var))?$var:'some_value';

//Een andere check die men zelden ziet is de OR check

isset($var)|| $var = 'some_value';
// als var leeg is krijgt het 'some_value'
$newValue = $var;

?>


Moeilijk is het niet en het geeft een goed leesbare vergelijking
Gewijzigd op 14/02/2015 17:53:48 door Cees S
 
PHP hulp

PHP hulp

20/04/2024 13:43:50
 
Ward van der Put
Moderator

Ward van der Put

14/02/2015 17:11:26
Quote Anchor link
Dat werkt niet zoals je hoopt.
 
Cees S

Cees S

14/02/2015 17:19:56
Quote Anchor link
Klopt in eerste instantie omdat hij met boolean komt, nu heb ik haken geplaatst en moet het ook met toewijzing werken. De meest simpele werkt zonder meer en heb ik veelvuldig in gebruik.
Na de extra haken zou dit $newValue = ((isset($var)) || 'some_value'); ook moeten werken
 
Ward van der Put
Moderator

Ward van der Put

14/02/2015 17:25:34
Quote Anchor link
>> Na de extra haken zou dit $newValue = ((isset($var)) || 'some_value'); ook moeten werken

Nee, ook niet.

Zit je met "zou moeten werken" maar wat te raden of ben je aan het trollen?
 
Ozzie PHP

Ozzie PHP

14/02/2015 17:34:10
Quote Anchor link
Goed gezien Ward. Dit zal nooit werken aangezien je bij een positieve test de output van isset in $newValue stopt. En isset geeft altijd een boolean terug.

@Cees S: wellicht voortaan eerst even testen voordat je dit soort constructies plaatst ;)
 
Cees S

Cees S

14/02/2015 17:46:22
Quote Anchor link
Klopt, even in mijn eigen sources moeten kijken en het gewijzigd.
Het blijft volgens mij wel een hele mooie vergelijking

werkend in gebruik is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$config
['width'] = 150;
isset($config['width']) || $config['width'] = 120;        
echo  $config['width'];// even een echo voor result, nu 150, if config['width'] not set 120
?>

?>





Toevoeging op 14/02/2015 18:02:57:

Kan iemand mij uitleggen waarom dit wel werkt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
isset($config['width']) || $config['width'] = 120;        
echo  $config['width']; //echo's 120
?>

en navolgend een boolean geeft en helaas niet werkt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$var
= (isset($config['width']) || $config['width'] = 120);        
echo  $var; //echo boolean 1
?>


Op zich ben ik al heel blij met de deze mogelijkheid
isset($config['width']) || $config['width'] = 120;
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2015 18:05:19
Quote Anchor link
Er is zoiets als kortere code... en er is zoiets als leesbaarheid.

Ik kan niet direct overzien wat er in zo'n "OR" statement gebeurt, en wat gebeurt er als een assignment "false" oplevert?

Als ik dit soort code zie zou mijn eerste ingeving zijn om weg te sturen van zo'n opzet, en de desbetreffende programmeur vragen stellen over zijn beweegredenen voor het schrijven van onleesbare code.

korter !== beter
 
Bart V B

Bart V B

14/02/2015 19:01:46
Quote Anchor link
Ik zie eigenlijk nou niet echt het nut om iets zo te controleren.
Even vertalen naar simpel Nederlands:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$config['width'] = 150; $config breedte = 150.
 Als $config breedte geset is, (Dat is ie al, want hij heeft een waarde van 150)
      OF $config with heeft een waarde van 120
 Laat $config with zien.

Hier gaat iets mank. Want waarom wil je in hemelsnaam iets wat al een vaste waarde heeft een controle of hij daadwerkelijk wel bestaat. Dat is niet logisch.

Dan ga je nog een stapje verder:
Je maakt een nieuwe variabele aan die je eerst controleert of hij bestaat, OF een waarde heeft van 120.
Dan is het eigenlijk wel logisch dat de variabele de eerste controle doet, de tweede controle is niet meer van belang. Dus de variabele word een boolean.

Maar wat wil je bereiken?
Want ik heb het idee dat je iets aan het zoeken bent wat veeeeeeel makkelijker kan.
Gewijzigd op 14/02/2015 19:03:21 door Bart V B
 
- SanThe -

- SanThe -

14/02/2015 19:18:06
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
isset($config['width']) || $config['width'] = 120;  
?>

Hierin geeft isset() true of false.
Indien true dan hoeft de rest achter de OR niet meer te worden uitgevoerd en blijft $config['width'] ongewijzigd..
Indien false dan wordt de rest wel uitgevoerd. $config['width'] krijgt een (nieuwe) waarde. En een gelukte toekenning geeft true.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php    
$var
= (isset($config['width']) || $config['width'] = 120);        
?>

Idem als hierboven.
Echter het resultaat, dus of true of false, dat stop je in $var.
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2015 19:36:42
Quote Anchor link
Maar het resultaat van een toekenning is toch tevens de toegekende waarde?
$whatever = false; (dit statement)
is equivalent met
false

Hoe moet ik de toekenning van een ongeinitialiseerde variabele met een waarde die "equivalent" is met false interpreteren in dit geval?
false || false

lolwut?

Het probleem is dat niet direcht duidelijk is wat de bedoeling van de programmeur is. Dan moet je nadenken over:
- wat de bedoeling (waarschijnlijk) was en
- of dit ook daadwerkelijk gebeurt (variabelen na afloop altijd een correcte waarde hebben)

Dit lijkt mij ook geen handige aanpak indien er hier of elders bugs in je scripts zitten. Het resultaat van debugging hiervan zal waarschijnlijk (en hopelijk) resulteren in het weg-refactoren van dit soort constructies.

EDIT: de crux van dit alles is waarschijnlijk dat je lazy evaluation op een verkeerde manier gebruikt (misbruikt).
Gewijzigd op 14/02/2015 19:38:17 door Thomas van den Heuvel
 
- SanThe -

- SanThe -

14/02/2015 19:44:06
Quote Anchor link
Dit zijn de eventuele mogelijkheden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php  
// geeft true  
$var = (true || n.v.t.);      
$var = (false || true);      

//geeft false
$var = (false || false);      
?>
 
Cees S

Cees S

14/02/2015 20:46:47
Quote Anchor link
Ik zal het er maar op houden dat het vrijdagmiddag was toen ik dit poste.
De waarde kan niet worden toegekend worden aan een variabele, omdat het een vergelijking op basis van waar of niet waar is.
Isset() geeft een boolean als result en niet de werkelijke waarde.
De fout ontdekte ik pas later omdat Isset() een 1 als result geeft en mijn routine een integer verwachte.

Het is m.i. wel een rare constructie maar met een heel handig gebruik.
Zoals al bleek gebruik ik het met config variabelen.

In mijn normale sources check ik altijd de variabele waardes voordat ik ze gebruik, met het resultaat een hoop if else etc.
Door deze voorwaarde
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
isset($var)|| $var = 'default';
?>

Weet ik zeker dat $var een waarde had, of krijgt ('default').

Wat betekend dat geen van de verdere routines undefined problemen van de $var zal ondervinden.

Ik hoop dat het hiermede duidelijk is waarom het echt een handige toepassing is.


Nu kan ik in 1 vergelijking testen of iets een waarde heeft en zo niet een default toekennen.
Gewijzigd op 14/02/2015 20:55:27 door Cees S
 
Bart V B

Bart V B

14/02/2015 20:56:17
Quote Anchor link
Dat kan maar dan is het toch logischer om het andersom te doen??

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if( !isset($var) )
{

   $var = 'default';
}

?>

Als je probleem is dat $var undefinded is, dan kan je hem toch bovenaan setten?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

$var
= ''; // lege string

if(trim($var) == '')
{

   $var = 'default';
}

?>

Dan heb je helemaal geen isset nodig... Maar is wel duidelijker wat er bedoeld word.
 
Cees S

Cees S

14/02/2015 21:15:39
Quote Anchor link
Bovenaan zetten kan binnen een file wel, niet wanneer die included wordt of uit een framework geleverd wordt
Het kan natuurlijk altijd zo:
if(trim($var) == '')
{
$var = 'default';
}
maar de short wijze is bij veel controleren overzichtelijker
isset($var)|| $var = 'some_value';

hoewel ik ook het zo deed;
if(trim($var) == '') $var = 'default';

daar geven een aantal editors een warning op en die verwachten minimaal
if((isset($var))&&(trim($var) === '')) {$var = 'default';}

Daarnaast kan ik er ook bijvoorbeeld een min. waarde mee controleren en/of toekennen
(waarde < 100)||waarde = 100;
of max
(waarde >1000)||waarde = 1000
Gewijzigd op 14/02/2015 21:22:29 door Cees S
 
Ozzie PHP

Ozzie PHP

14/02/2015 21:41:02
Quote Anchor link
>> (waarde < 100)||waarde = 100;

Op zich kan dat natuurlijk wel, maar de vraag is of het ook duidelijk is.

Je kunt het ook als volgt schrijven, waardoor het wél zeer duidelijk is.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if ($value < 100) $value = 100;
?>
 
Bart V B

Bart V B

14/02/2015 22:34:55
Quote Anchor link
Quote:
maar de short wijze is bij veel controleren overzichtelijker
isset($var)|| $var = 'some_value';

Je kan met isset() meteen meerdere variabelen controleren.
Dus ik zie het totale nut niet van short wijze.
Het maakt de code alleen maar onoverzichtelijk wanneer je het precies niet wil.
Natuurlijk zijn er uitzonderingen wanneer je een view schrijft gemixt met html code.
Dan is het soms prettiger om het short te maken zodat het duidelijker is.
Bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php if ($a == 5): ?>
   <p>A is equal to 5</p>
<?php endif; ?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<ul>

<?php foreach ($todo as $item): ?>

    <li><?php echo $item; ?></li>

       <?php endforeach; ?>

</ul>

Let op! shorthand werken levert geen snelheid op.
Dus als je daarom dit zou willen dan moet je het zeker niet doen.

Quote:
daar geven een aantal editors een warning op en die verwachten minimaal
if((isset($var))&&(trim($var) === '')) {$var = 'default';}

Um... Dus als ik het goed begrijp dan laat jij een editor beslissen wat goed en fout is?
Als het goed is, en je weet zeker dat met error_reporting er geen fout is, dan is het toch goed?
Mijn editor doet ook dingen die ik niet wens, maar als ik zeker weet dat het geen probleem oplevert en geen foutmeldingen van php geeft dan negeer ik deze. Per slot van rekening ik ben de baas over mijn code niet mijn editor. :)

EDIT
koek kruimel tussen de T dus kleine typo..
Gewijzigd op 14/02/2015 22:40:17 door Bart V B
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2015 23:57:33
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
isset($var)|| $var = 'default';
?>


Dit impliceert tevens dat $var mogelijk ergens anders geïnitialiseerd wordt. Moet iemand die jouw code bekijkt naar die variabele gaan zoeken? Initialiseer één variabele op één plek op de manier die Bart V B beschrijft (eerste fragment).

Bekijk het eens op de volgende manier: als jij iemand anders zijn code moet bekijken dan heb jij niet de "rode draad" die die persoon had tijdens de ontwikkeling ervan. Vaak komt het er op neer dat je de code redelijk aandachtig moet doornemen voordat je "de draad" kunt oppikken. Daarbij is er zeker iets voor te zeggen om onnodige complicaties uit de weg te gaan. Deze code "leest niet fijn", je moet in je gedachten deze enkele regel ontleden voordat je je een beeld kunt vormen wat deze inhoudt, daarna moet je deze interpreteren (bijvoorbeeld door dummy-waarden in te voeren en beredeneren wat hier dan uitkomt). Als een compleet programma in dit steno is opgezet, probeer dit dan maar eens te ontrafelen - te meer wanneer er bugs in zitten.

Als je "denkstappen" kunt elimineren bij het schrijven van code lijkt mij dit alleen maar voordelen hebben.
 
Cees S

Cees S

15/02/2015 11:06:45
Quote Anchor link
Jullie hebben allemaal voor een deel gelijk, maar bij het toepassen van MVC krijg je heel vaak variabelen die uit een model in de controller komen die je voor het toepassen wil controleren.
Door dit met if statements te doen wordt de gehele functie of class onnodig lang en daarvoor gebruik ik graag dergelijke short notaties.
Navolgende toepassing zullen jullie dan waarschijnlijk ook wel nooit toepassen ;)
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
<?php
    if ($var = functie_call()) {
        //use $var for something
    }

    //normale code zou zijn
    $var = functie_call();
    if ($var) {

    }


    //of misschien nog erger

    $data['user']['ID'] = $user_id = $this->model->user->get_user($id);
    // voor de leesbaarheid $user_id var gemaakt om in de verdere source te kunnen gebruiken.
    $data['user']['adres'] = $this->model->address->get_address($user_id);

    /* Natuurlijk kan het ook anders door aan het begin */
    $user_id = $this->model->user->get_user($id);
    /* en aan het eind of direct volgend */
    $data['user']['ID'] = $user_id;

    //het begin en eind kan een groot aantal regels uit elkaar liggen

?>


En ja het gebeurt inderdaad regelmatig dat door debuggen een $var met name undefined $var moet worden gevonden. Door eigen fouten of door andermans fouten maakt dan niets uit.
Thomas heeft absoluut gelijk dat je onnodige complicaties uit de weg moet gaan.
Naar mijn idee doet een short notatie daar een positieve bijdrage aan en zeker als die undefined $var fouten elimineert.
Bij het gebruik van public sources is undefined een van de meest gemaakte fouten die bij ons problemen geeft.
Als je dan onderzoek wat de oorzaak is blijkt het veelal een scope probleem te zijn, die je niet op deze wijze oplost maar voor de rest van de applicatie niet op voorhand een error veroorzaakt.

En wat betreft die editor, ja die geef ik het voordeel van de twijfel. Eclipse, Netbeans, PhpED, etc. helpen door vroegtijdig codes te controleren, waarom zou ik daar bij syntax controles wel gebruik van maken en niet wanneer de editor misschien slechts goed gebruik aangeeft?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/02/2015 11:20:32
Quote Anchor link
Ik zie niet in waarom je variabelen zou moeten gaan controleren of ze bestaan van model naar controller.
Je moet gewoon zorgen dat de variabelen die terug verwacht worden altijd bestaan. In sommige situaties kan het voorkomen dat een element in een array misschien soms wel en soms niet bestaat maar dat kun je ook in de view nog testen.
 
Cees S

Cees S

15/02/2015 11:52:55
Quote Anchor link
Ach ja gewoon bestaan, dat zou wel moeten maar helaas gaat het daar wel eens fout.

En nee, in een View een $var testen is bij ons NIET gewenst, daar MOET die (ook array's) inderdaad een waarde vanuit de controller hebben.
 
Thomas van den Heuvel

Thomas van den Heuvel

15/02/2015 16:37:46
Quote Anchor link
Quote:
Bij het gebruik van public sources is undefined een van de meest gemaakte fouten die bij ons problemen geeft.

??? Dat moet je dan toch daar oplossen - of het zou uit de specificatie moeten blijken wat je kunt terugverwachten en daar dan op anticiperen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if ($var = functie_call()) {
    //use $var for something
}
?>


Dit is een haast klassieke fout, maar hangt ook weer af van de specificatie van functie_call(). Zo zou in deze definitie kunnen staan "returns false on error". Maar wat als nu de lege string, het cijfer 0, een leeg array of de waarde null geldige return-values zijn? Het if-statement wordt dan niet uitgevoerd.

Denk aan functies als readdir.

Een betere afhandeling zou zijn (maar dit hangt dus ook weer af van de specificatie):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (false === ($var = functie_call())) {
    // die / exception / complain
} else {
    // use $var
}
?>


Daarnaast, ik denk niet dat er één universele manier bestaat om iets te initialiseren, dit hangt ook van het gebruik af.

Maar ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
isset($var)|| $var = 'default';
?>

Wellicht is null een toegestane waarde voor $var (al zou je voorzichtig moeten omgaan met null-waarden). Die wordt in het bovenstaande geval dan overschreven. Misschien is het beter om in plaats van isset() een specifieke controle op een waarde of een type te doen.

Laat ik het zo zeggen, ik begin de beweegredenen wel een beetje te zien, en het is korter dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (!isset($var)) {
    $var = 'default';
}

?>

Maar in dit geval schiet het zijn doel een beetje voorbij: je offert leesbaarheid op voor code-lengte, en in dit geval zou ik deze extra lengte voor lief nemen omdat het de interpretatie van wat er gebeurt makkelijker maakt en niet opweegt tegen de extra moeite die je moet doen om de kortere code te lezen.
 

Pagina: 1 2 volgende »



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.