Simpel $var check

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij op zoek naar een nieuwe uitdaging? Lees dan snel verder! Voor een organisatie in de regio Utrecht 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

Bekijk vacature »

Fullstack Developer

Functieomschrijving Heb je kort geleden jouw HBO diploma ICT development behaald? Of zit je nog aan het begin van je carrière en heb je affiniteit met C#.NET? Voor een erkende werkgever in de omgeving van Oosterhout zijn wij op zoek naar een fullstack developer. Als C#.NET developer werk je samen met een vooruitstrevend team aan het ontwikkelen van maatwerk software voor klanten. Je hebt affiniteit met SQL, maar nog belangrijker is dat je kennis en ervaring hebt met C#.NET. Jouw werkzaamheden zien er als volgt uit: Het ontwikkelen van onze high-availability en high-performance backend; Je begint de dag rond 8:30

Bekijk vacature »

Front-end developer

Functie Jij komt te werken in een team van 5 developers. het product is continue in beweging. Nieuwe en bestaande klanten vragen om vaak nieuwe features. Hierin ben jij zeer belangrijk om te zorgen dat de functionaliteiten goed opgezet worden op technisch vlak. Designs krijg je aangeleverd van een externe partij zodat jij je primair kan focussen op de techniek! Je hebt daarbij alle vrijheid om je eigen creativiteit toe te passen en mee te denken over de gebruikte technieken. Het gezamenlijke doel is een product dat functioneel zeer gebruiksvriendelijk is en het bedrijfsproces van de gebruikers versneld en kwalitatief

Bekijk vacature »

Back-end .NET Developer

Functie omschrijving C# / .NET Developer gezocht voor een dynamische organisatie in de regio Houten! Voor een leuke organisatie in de regio Houten zijn wij op zoek naar een Back-end developer die klaar is voor een nieuwe uitdaging. In deze functie werk jij aan verschillende projecten en ga je vaak bij klanten op bezoek. Binnen deze functie kun je een grote mate van uitdaging, diversiteit en verantwoordelijkheid treffen. Bedrijfsprofiel Waar ga je werken? Het bedrijf waar je gaat werken is gespecialiseerd in het ontwerpen en implementeren van procesautomatisering en procesinformatisering. Zij doen dit onder andere voor de (petro)chemie, pharma, infra,

Bekijk vacature »

Hands-on Solution Architect / Software Architect (

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Solution Architect / Software Architect op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je werkt samen met gedreven DevOps teams, bestaande uit frontend, backend en middleware developers, testers, UX-designers. Samen met de teams ben je continu op zoek naar de beste oplossingen voor onze klanten. Als Solution Architect onderzoek

Bekijk vacature »

Senior Front end developer Digital Agency

Functie Jij als Front end developer komt te werken in een van de 8 multidisciplinaire teams binnen de organisatie. Deze teams werken op basis van Scrum agile in 2 wekelijkse sprints. De grootte van de teams varieert van 9-14 collega’s en bestaan altijd uit één of meerdere project managers en een project manager. Samen met je team werk je aan verschillende projecten voor uiteenlopende klanten zoals grote multinationals tot het kleine mkb. De stack waarmee gewerkt wordt is voornamelijk Javascript, ES6, Es.next, HTML, CSS, React.js en Node.js. Wat deze organisatie onderscheid is dat ze echt langdurige partnerships aangaan met hun

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Back-end Developer C#

Functie omschrijving We are looking for a dutch native speaker Ben jij een ervaren back-end developer, die graag in een in-house functie wil werken? Passen de woorden innovatie, programmeren en teamspeler bij jou? Zoek niet verder en lees snel verder. Voor een echt familiebedrijf in de regio van Uden ben ik op zoek naar een back-end developer, die met name kennis heeft van C# en .NET. Jij gaat de interne applicaties verder optimaliseren en nieuwe features ontwikkelen. Verder ga je de volgende werkzaamheden uitvoeren: Ondersteunen gebruikers; Uitvoeren van analyses van de software/applicaties; Maken van functionele ontwerpen en deze door vertalen

Bekijk vacature »

.NET Software Developer

Dit ga je doen Als .NET Software Developer zul jij je voornamelijk bezig houden met: Het van scratch af aan bouwen van applicaties (.NET, C#, Bootstrap, KnockoutJs en WebAPI2); Het testen van jouw code d.m.v. het uitvoeren van unittesten; Het oplossen van bugs in de code; Het onderhouden van contact met collega's betreffende de door jouw ontwikkelde applicaties; Het verbeteren en doorontwikkelen van maatwerkapplicaties. Hier ga je werken Jij gaat aan de slag als .NET Software Developer en gaat je focussen op het bedenken, ontwikkelen en testen van maatwerkapplicaties in voornamelijk C#. Dit ga je doen bij een grote, internationale

Bekijk vacature »

Front-end React developer

Functie Het frontend team bestaat momenteel uit 4 dedicated front-enders en is hard aan het groeien! Ook werken er diverse designers waar je veel mee schakelt. Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren, jij bent hierin de schakel tussen de eindgebruiker en de slimme backend. Je werkt in het frontend team samen met de backend teams en product owners om te zorgen dat onze applicaties een fijne gebruikerservaring opleveren. Ze werken o.a. met: React, Atomic design, Styled components, JavaScript / TypeScript, NPM, Webpack Blade templates, HTML, SCSS, Git flow. Eisen • HBO

Bekijk vacature »

Software Developer / .NET / Azure

Dit ga je doen Als Lead .NET Software Developer zal je je bezig houden met: Het vertalen van bedrijfswensen naar een technische roadmap; Uitwerken van nieuwe architectuur / designs; Het team aansturen en motiveren; Toezien op de kwaliteit van de code; Mee ontwikkelen van nieuwe features en applicaties. Hier ga je werken Deze organisatie is op dit momenteel marktleider in het ontwikkelen van productielijnen voor de voedselindustrie en heeft een wereldwijd klantnetwerk. Binnen deze organisatie is het team van software developers dagelijks bezig met het ontwikkelen van maatwerk oplossingen om alle productiemachines aan te sturen, maar ook bedrijf kritische applicaties

Bekijk vacature »

Ervaren Full-Stack PHP Developer

Functieomschrijving Gezocht! Ervaren PHP Developer! Voor een organisatie in de regio Harderwijk zoeken wij een ervaren PHP Developer die het IT team van dit bedrijf gaat versterken. We zijn op zoek naar een enthousiaste en breed georiënteerde IT-er die het innovatieve bedrijf nog een stap verder kan brengen. Voor deze functie zoeken wij iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je werkt samen met een externe ontwikkelpartij en kunt hun dus uitdagen op het geleverde werk. Het schrijven van concepten aan de AI en hardware kant valt onder je verantwoordelijkheden. Het bedrijf noemt zichzelf een

Bekijk vacature »

Fullstack developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie werken? Voor een mooi softwarebedrijf in omgeving Alblasserdam zijn wij op zoek naar versterking op de afdeling Software Development! Als Fullstack react.js developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met de back

Bekijk vacature »

Ervaren PHP developer gezocht!

Functie Het team bestaat inmiddels uit zo’n 25 collega’s met specialisten op het gebied van development, data(analyse), marketing, infrastructuur en finance. Ze hebben een supermodern pand en bieden hiernaast veel vrijheid en verantwoordelijkheid. Ze doen er alles aan om jou op te gemak te stellen. Zo kun je je eigen werkplek inrichten naar persoonlijke wensen, maar gaan ze bijvoorbeeld ook jaarlijks met elkaar wintersporten en zijn er andere leuke uitjes. Als onderdeel van één van de scrumteams ga je aan de slag, samen ben je medeverantwoordelijk voor het doorontwikkelen van hun business applicatie waar het traffic team dagelijks mee werkt.

Bekijk vacature »

.NET Developer

Functie omschrijving .NET developer met ervaring gezocht! Voor een softwarebedrijf in de regio Veenendaal zijn wij op zoek naar een .NET developer met een aantal jaar ervaring. Jij bent zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Verder ben je bezig met nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en productspecialisten om zo mooie producten te creëren. Bedrijfsprofiel De organisatie waar je voor gaat werken is een snelgroeiende softwareleverancier en allround dienstverlener. Deze organisatie heeft zowel klanten die

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

03/05/2024 11:49:06
 
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.