Door
Cees S
op 14-02-2015 16:27
gewijzigd op 14-02-2015 17:53
2.705 views
Vond een snelle (OR) notatie wijze die ik met jullie wil delen.
Normale check bijvoorbeeld
<?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
Het gaat wat leesbaarheid betreft al fout op het eerste trefwoord: als de if ontbreekt, zie je eerder over het hoofd dat hier eigenlijk een conditie staat.
<?php
if (false === ($var = functie_call())) {
// die / exception / complain
} else {
// use $var
}
?>
Dit gaan we zeker invoeren, het is bij ons wel regel dat een functie met fout resultaat altijd een false terug geeft, dan weet je gewoon wanneer er een resultaat is dat je die gebruiken kan. Wat je nu aanreikt is nog weer een extra controle of dat de regels niet worden overtreden.
Middels de short notatie doen wij in de controller een allerlaatste controle en eventueel een correctie voordat de View wordt aangeroepen. Zodat er geen $vars bestaan die undefined zijn, omdat dit direct tot een error aanleiding geeft.
In de Views worden geen controles uitgevoerd omdat de gebruikers van de Views niet per definitie programmeurs zijn.
En inderdaad offeren we soms leesbaarheid op, zeker als je weet dat wij zelfs array's op deze wijze controleren. Een null is bij ons altijd ongewenst omdat niet duidelijk hoeft te zijn waarom het null is en ook de errors als gevolg niet even consistent (ook helaas van onze eigen libraries) zijn.
Een eventuele lege string [isset($var)|| $var = '';] wordt door al onze libraries zonder problemen verwerkt.
Tot slot Thomas heb ik de vergelijking hier heel simpel gehouden maar je kan van alles uitvoeren en het resultaat boolean gebruiken om een waarde aan een var toe te kennen. Jaja dat kan ook anders ;)
Het beste werkt het bij ons bij vars uit config bestanden of het controleren van user input op defaults.
zoals bijvoorbeeld een max. breedte van een image, System max breedte bijvoorbeeld 1024 maar in een initialisatie formulier kan een gebruiker zelf een waarde tot max 1024 opgeven. Dat wordt als het goed is met javascript maar ook in de post gecontroleerd en/of gecorrigeerd.