В чем разница между echo ("выход"); die; и die ("выход");?

Я видел, как какой-то код делает это:

if(something){
    echo 'exit from program';
    die;
}
...more code

и другие, которые просто использовать die:

if(something)   die('exit from program');
...more code

есть ли какая-либо неотъемлемая разница в том, когда он закончит программу, должен ли я знать код, который приходит после него? этсетера

обновление

Я спрашиваю в основном, если это стиль кодирования,или если есть реальная причина, почему некоторые кодируются так или иначе. Я не спрашиваю, в чем разница между exit и die есть.

7 ответов


нет, разницы нет; они оба напишут "exit" для STDOUT и завершения программы.

Я бы предпочел die("exit") метод, поскольку он меньше печатает, легче комментировать и семантически яснее.

что касается "скорости", Почему вас волнует, что быстрее? Вам нужна ваша программа, чтобы умереть очень быстро?

RE: ваше обновление

... любая неотъемлемая разница в том, когда она завершит программу ...

здесь нет разница, присущая или нет. Они одинаковые. Второй вариант:die('exit'), является одним оператором и поэтому не требует фигурных скобок при использовании с if заявление; это не имеет ничего общего с die и все, что связано с блоками и управлением потоком на языках C-стиля.

RE: ваш комментарий / второе обновление

в какую сторону ты die это вопрос личных предпочтений. как я сказал:они идентичны. Я бы выбрал второй вариант по причинам, перечисленным выше: короче, яснее, чище, что, на мой взгляд, означает "лучше".

разницу между exit и die это exit позволяет вернуть ненулевой статус, в то время как die возвращает 0. Ни одна из функций не "лучше", они служат разным целям.


никакой разницы.

и зачем просить разницу в скорости, так как вы умираете.


есть разница ребята. DIE () может использоваться с другими отказоустойчивыми функциями, тогда как эхо должно быть поймано как ошибка или исключение.

$query = mysql_query("SELECT * FROM tablename") OR DIE(mysql_error());

дает вам немедленную последовательность catch/die.


для конкретного примера, который вы разместили, они равны, так как $status является строкой, но как руководство говорит, что это не всегда может быть так:

если status является строкой, эта функция выводит статус непосредственно перед выходом.

если status является целым числом, это значение будет использовано как статус выхода и не печатать. Статусы выхода должны быть в диапазоне от 0 до 254, состояние выхода 255 зарезервирован PHP и не должен использовать. Статус 0 используется для успешно завершить программу.

так если вместо 'exit from program' вы хотели вывести, скажем 42 вам действительно нужно будет сделать:

echo 42; die();

языковые конструкции exit() и die() эквивалентны, по крайней мере, в руководстве по PHP. Я использую exit (), когда эта строка должна быть достигнута, и я хочу, чтобы скрипт остановился в этой точке. Die (), с другой стороны, для ситуаций, которые не должны возникать. Это то, что кажется мне наиболее естественным, вы не должны соглашаться.


в основном это стиль кодирования. Однако, если вы выводите сообщения отладки, echo тогда die лучше:

echo "The frobnuticator blew up!";
die;

становится

//echo "The frobnusticator blew up!";
die;

конечно, вы, скорее всего,

if ($debug) echo "The frobnusticator blew up!";
die;

что намного проще на (мой|the) глаз, чем

die($debug?"The frobnusticator blew up!":"");

из руководства php:

Примечание: эта языковая конструкция эквивалентна die ().

но все же есть разница между умереть и выход :

используя die () вы можете опубликовать строку : die("произошла ошибка");

тот же результат с использованием exit ()

<?php
    echo("An error occurred <br>");
    exit(0);
?>

или если вы CLI или оболочка unix:

использование PHP на командная строка, die ("произошла ошибка") просто печатает" произошла ошибка " в STDOUT и завершает программу с обычным кодом выхода 0.

<?php
    fwrite(STDERR, "An error occurred \n");
    exit(0); //
?>