В чем разница между 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); //
?>