Verkorte ifsetor() (vanaf PHP 5.3)

Je hebt nu (vóór PHP 6) de versnelde if-else syntax in PHP, namelijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
= (vergelijking) ? waarde : andere_waarde;
?>


Bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$var
= 5;
$var = ($var > 3) ? 'ja' : 'nee';
// levert: ja
?>


Je hebt echter vaak de situatie dat een var alleen moet veranderen als een bepaalde variabele geset is, dus dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$var
= 5;
$var = isset($var) ? $var : 3;
?>


Zo ben je toch weer lang aan het typen. Dit is nu versneld gemaakt. In de PHP 6 versie die ik draai werkt het echter nog niet zoals verwacht:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$var
= 'foobar';
$var = $var ?: 'default';
// dit levert $var='foobar'

unset($var);

$var1 = $var ?: 'default1';
// levert default1 en notice; die notice zou niet moeten

$var = $var1 ?: 'default2';
// levert default1
?>


De notice zou niet moeten komen, want dit is een verkorte versie voor ifsetor(). Namelijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function ifsetor(&$input, $alternative) {
   return isset($input) ? $input : $alternative;
}


$waarde = ifsetor($input, $new);
?>


Advies: nog niet gebruiken, INSTABIEL (notice)

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Installatie PHP 6 naast PHP 5
  2. Inleiding
  3. Bye@ Register_globals, magic_quotes, mysql_query()
  4. Namespaces (vanaf PHP 5.3)
  5. Label en goto
  6. Verkorte ifsetor() (vanaf PHP 5.3)
  7. Static keyword (vanaf PHP 5.3?)

PHP tutorial opties

 
 

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.