PHP-exit czy return który jest lepszy?

Chciałbym wiedzieć w następującym przypadku, który jest lepszym rozwiązaniem:

W skrypcie PHP, jeśli zmienna $fileSize jest większa niż 100, Zatrzymuję skrypt;

Przypadek I:

<?php
if ( $fileSize > 100 )
{
   $results['msg'] = 'fileSize is too big!';
   echo json_encode( $results );
   exit();
}

Przypadek II:

<?php
if ( $fileSize > 100 )
{
   $results['msg'] = 'fileSize is too big!';
   exit( json_encode( $results ) );
}

Przypadek III:

<?php
if ( $fileSize > 100 )
{
   $results['msg'] = 'fileSize is too big!';
   return( json_encode( $results ) );
}

Która z trzech (3) powyższych opcji jest najlepsza?

Author: nyedidikeke, 2010-08-14

4 answers

Ponieważ używasz exit i return w zasięgu globalnym (Nie wewnątrz funkcji), zachowanie jest prawie takie samo.

Różnica w tym przypadku pojawi się, jeśli plik zostanie wywołany przez include() lub require(). exit zakończy działanie programu, natomiast return przejmie kontrolę nad skryptem wywołującym (gdzie wywołano include lub require).

 62
Author: Aziz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-14 16:02:09

Zwykle stosuję metodę return(), aby Inne skrypty mogły kontynuować wykonywanie. W ten sposób, jeśli kiedykolwiek użyjesz innego skryptu do wywołania tego, może to zrobić obsługę błędów, aby poradzić sobie z przypadkiem, gdy plik jest zbyt duży, w przeciwieństwie do zawsze wstrzymywania wykonania.

 7
Author: Jeffrey Blake,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-14 15:57:26

Exit kończy program jak die (). manual

 4
Author: Iznogood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-14 15:58:01

To zależy...jeśli twój skrypt ma nie robić nic innego, jak tylko wypisywać wiadomość, a nie chcesz, aby skrypt robił cokolwiek później, exit() zadziała. W przeciwnym razie użyj return.

 4
Author: Crayon Violent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-14 15:58:34