Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Чем подерживается конструкция "or die"?
 
 автор: tAleks   (07.04.2007 в 12:01)   письмо автору
 
 

Это будет работать?

 $ftp->rename($old_path, $new_path) or die('Не могу переименовать папку');


Вообще вопрос такой: or die срабатывает когда что-то, не важно что, вернуло FALSE? Или важно что?

   
 
 автор: Unkind   (07.04.2007 в 12:09)   письмо автору
 
   для: tAleks   (07.04.2007 в 12:01)
 

or - логический оператор. Если одно условие не соблюдается, то проверяется следующее. Например, можно написать

<?php
myfunc
() or alternative() or print("Функции 'myfunc' и 'alternative' вернули false.");
?>


Если самое первое условие соблюдено, то остальные даже не проверяются, т.е. если myfunc() вернула true, то все остальное игнорируется.

Это будет работать?
Да.

   
 
 автор: cheops   (07.04.2007 в 13:33)   письмо автору
 
   для: tAleks   (07.04.2007 в 12:01)
 

or вычисляет логическое выражение по упращённой схеме: если первое выражение оказалось true, то смысла вычислять второе нет - логическое выражение уже равно true. Если первое выражение оказалось false - для получения результата нужно проверять второе выражение, так как оно может оказаться и true и false.
Очень давно это неявное правило стали использовать для таких коротких выражений, ну в Perl ладно, он выстраивался как контекстный язык - на нём отрабатывались приёмы лингвистического языка, поэтому он пропитан неявными и неочевидными правилами... Ладно ранний C - на нём выжимали всё, что можно и эта конструкция позволяла экономить такты/байты.
Нет, расползлось по всем языкам... даже в C#, уж казалось новый язык - чуть не отдельные ключевые слова вводятся для обязательного и необязательного вычисления выражений.

Это плохая конструкция по тому, что не очевидная... у вас у самого вызывает затруднение интерпретации её работы. Будте уверены, что и сопровождающий ваш код программист также может потратить изрядное вермя на поиски ответа и разбор кода. Следует использовать конструкцию
<?php
if(!$ftp->rename($old_path$new_path)) die('Не могу переименовать папку');
?>

Так как она работает одинаково во всех языках программирования и в отличие от or не позволяет внести дополнительные ошибки в код.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования