Verschil tussen exit; / exit(); / break;

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johan de wit

johan de wit

06/07/2015 04:46:22
Quote Anchor link
Wat is het verschil tussen deze drie?

- exit;
- exit();
- break;
 
PHP hulp

PHP hulp

20/04/2024 13:27:45
 
Marthijn Buijs

Marthijn Buijs

06/07/2015 05:56:24
Quote Anchor link
In iedergeval geval maken die haakjes bij exit totaal geen verschil.
 
PHP MODEV

PHP MODEV

06/07/2015 07:50:20
Quote Anchor link
Exit; het maakt geen verschil als er haakjes rond zitten, exit stopt het script direct op het punt waar exit staat en de rest word niet geladen

Break; word gebruikt in loops enz. en stopt het huidige code blokje voordat hij het andere stukje code leest

Corrigeer me als ik fout ben
 
- Ariën  -
Beheerder

- Ariën -

06/07/2015 08:35:20
Quote Anchor link
Exit kan je ook als functie gebruiken met een string:

exit("Het script is gestopt");

Doordat we netjes met if/else kunnen controleren is het gebruik van exit/die vaak overbodig.

PHP MODEV op 06/07/2015 07:50:20:
Break; word gebruikt in loops enz. en stopt het huidige code blokje voordat hij het andere stukje code leest

Ter informatie : Zo'n uitgevoerd 'codeblokje' heet een iteratie.
Gewijzigd op 06/07/2015 08:38:19 door - Ariën -
 
Pim -

Pim -

06/07/2015 14:16:56
Quote Anchor link
Het verschil tussen 'exit;' en 'exit();' is best wel interessant overigens. In PHP heb je twee syntaxelementen die allebei op functies lijken: echte functies (die haakjes vereisen) en 'language constructs'. De tweede categorie bevat een aantal ingebouwde 'functies', zoals empty, isset, return en exit. Deze language constructs worden apart door de compiler begrepen en hebben dus andere syntax regels dan functies. Exit gedraagt zich alleen heel anders dan return.
Dit mag:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
exit;
exit();
exit($arg);
return;
return $arg;
return($arg);

Maar de volgende dingen mogen dus niet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
exit $arg;
return();


Uit https://github.com/php/php-src/blob/master/Zend/zend_language_parser.y :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
    |    T_EXIT exit_expr    { $$ = zend_ast_create(ZEND_AST_EXIT, $2); }
// en verderop
exit_expr:
        /* empty */                { $$ = NULL; }
    |    '(' optional_expr ')'    { $$ = $2; }
;

// en verderop
    |    T_RETURN optional_expr ';'        { $$ = zend_ast_create(ZEND_AST_RETURN, $2); }

Raar taaltje, dat PHP. Nog een opmerking over exit:
Als je een string als argument geeft, eindigt PHP met 0 als statuscode (niets aan de hand) en echo't de string. Als je het een integer als argument geeft, eindigt PHP met die integer als statuscode, zonder iets te echo'en:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
pim$ php -r 'exit("abc");'; echo " $?" // => abc 0
pim$ php -r 'exit(1);'; echo " $?" // => abc 1

// Ook leuk, dankzij het overflowen van de exit status:
pim$ php -r 'exit(-1);'; echo " $?" // => 255
Gewijzigd op 06/07/2015 14:49:55 door Pim -
 



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.