|
|
|
| Скачал free форум. И попадаются вот такие вещи:
<?
function read_file($file_name)
{
do
{
if (is_file($file_name))
break;
return false;
} while(0);
}
?>
|
или
<?
do
{
if ( session_is_registered( "sid" ) )
break;
session_start( );
$sid = session_id( );
session_register( "sid" );
} while( 0 );
?>
|
Это небрежность программиста или я что-то недопонимаю? | |
|
|
|
|
|
|
|
для: Indemion
(23.01.2008 в 14:28)
| | индийский код :) ... | |
|
|
|
|
|
|
|
для: CrazyAngel
(23.01.2008 в 14:41)
| | И вот еще какой момент. Тоже не могу понять. Идет вызов функции:
<?
function shema($path)
{
global $_SESSION;
global $_ENV;
exit( );
# а дальше следует огромный кусок кода, который никогда не будет исполняться???
}
?>
|
Самое удивительное, что у них все работает :) | |
|
|
|
|
|
|
|
для: Indemion
(23.01.2008 в 14:28)
| | Старый стиль программирования
ЗЫ: возьмите форум из раздела dowload - мой вам совет | |
|
|
|
|
|
|
|
для: mihdan
(23.01.2008 в 15:04)
| | Старый, но рабочий?
Если "да", то хочу понять этот стиль. По долгу службы мне приходится разбирать десятки кодов. | |
|
|
|
|
|
|
|
для: Indemion
(23.01.2008 в 17:09)
| | десятки кодов? ))
Что вам здесь не понятно?
Цикл do {} while() выполнится по крайней мере один раз.. Причем при надобности из любого места внутри этого цикла можно вызвать break. Своего рода goto... | |
|
|
|
|
|
|
|
для: kasmanaft
(23.01.2008 в 18:18)
| | Да уж поверьте. У руководства две-три новые идеи в день. Раньше их реализовывал мой шеф, а теперь он ушел и все осталось мне. А так как времена игр умерли давно, то теперь пришел черед левых программ (автоботы и .т.п.). Каждое задание связано не только с интернетом – приходиться подтягиваться по многим направлениям. :)))
Мне непонятно почему оторвался break; | |
|
|
|
|
|
|
|
для: Indemion
(23.01.2008 в 19:02)
| | > Да уж поверьте.
Да я верю, че уж там... Просто вы выразились интересно :)
> Мне непонятно почему оторвался break;
То есть?
PS автор кода, что наверху, тоже, видимо, не понимал, что пишет). Не лучший пример использования сего do{}while(0)... Да и вообще, может быть, это и удобно в некоторых случаях, но код запутывает. | |
|
|
|
|
|
|
|
для: kasmanaft
(23.01.2008 в 19:14)
| | Про break: извините, видимо я сильно заработался. Забыл, что если строка не закрыта знаком "точка с запятой", то её можно продолжить на следующей. Понял уже по дороге домой.
К PS: я изучаю магазин, там код похожий. Думаю, что запутывают намеренно – защищают ИС. | |
|
|
|
|
|
|
|
для: Indemion
(23.01.2008 в 17:09)
| | >Старый, но рабочий?
>Если "да", то хочу понять этот стиль. По долгу службы мне приходится разбирать десятки кодов.
В PHP3 были не все функции, которые присутствуют в современной версии языка, поэтому для совместимости с ним вводились самые разнообразные самописанные функции, ведь работу, которую выполняют функции вроде explode() тоже можно запрограммировать в виде самописанной функции... | |
|
|
|
|
|
|
|
для: cheops
(24.01.2008 в 14:47)
| | Речь не о том...
Насколько я понял, под старым стилем подразумевается использование
do
{
if (is_file($file_name))
break;
return false;
} while(0);
}
|
а не
if (!is_file($file_name))
return false;
}
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(24.01.2008 в 16:04)
| | Спасибо за пояснения.
А подскажите, пожалуйста, зачем вызывать exit(), когда далее следует большой и нужный кусок программы.
<?
function shema($path)
{
global $_SESSION;
global $_ENV;
exit( );
# а дальше следует огромный кусок кода, который никогда не будет исполняться???
}
?>
|
| |
|
|
|
|
|
|
|
для: Indemion
(25.01.2008 в 21:33)
| | На момент отладки может понадобится. Не более. | |
|
|
|
|
|
|
|
для: Unkind
(26.01.2008 в 00:51)
| | Смотря в чем отлаживать, можно и точку останова поставить. | |
|
|
|
|
|
|
|
для: Faraon
(26.01.2008 в 01:05)
| | Меня не интересует как и где можно заниматься отладкой. Я ответил с какой разумной целью там может стоять exit. | |
|
|
|