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

Форум PHP

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

 

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

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

тема: Разбираю скрипт форума.
 
 автор: Indemion   (23.01.2008 в 14:28)   письмо автору
 
 

Скачал 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( 
);
?>

Это небрежность программиста или я что-то недопонимаю?

   
 
 автор: CrazyAngel   (23.01.2008 в 14:41)   письмо автору
 
   для: Indemion   (23.01.2008 в 14:28)
 

индийский код :) ...

   
 
 автор: Indemion   (23.01.2008 в 14:47)   письмо автору
 
   для: CrazyAngel   (23.01.2008 в 14:41)
 

И вот еще какой момент. Тоже не могу понять. Идет вызов функции:

<?
function shema($path)
{
    global 
$_SESSION;
    global 
$_ENV;
    exit( ); 
   
# а дальше следует огромный кусок кода, который никогда не будет исполняться???
}
?>


Самое удивительное, что у них все работает :)

   
 
 автор: mihdan   (23.01.2008 в 15:04)   письмо автору
 
   для: Indemion   (23.01.2008 в 14:28)
 

Старый стиль программирования

ЗЫ: возьмите форум из раздела dowload - мой вам совет

   
 
 автор: Indemion   (23.01.2008 в 17:09)   письмо автору
 
   для: mihdan   (23.01.2008 в 15:04)
 

Старый, но рабочий?
Если "да", то хочу понять этот стиль. По долгу службы мне приходится разбирать десятки кодов.

   
 
 автор: kasmanaft   (23.01.2008 в 18:18)   письмо автору
 
   для: Indemion   (23.01.2008 в 17:09)
 

десятки кодов? ))

Что вам здесь не понятно?
Цикл do {} while() выполнится по крайней мере один раз.. Причем при надобности из любого места внутри этого цикла можно вызвать break. Своего рода goto...

   
 
 автор: Indemion   (23.01.2008 в 19:02)   письмо автору
 
   для: kasmanaft   (23.01.2008 в 18:18)
 

Да уж поверьте. У руководства две-три новые идеи в день. Раньше их реализовывал мой шеф, а теперь он ушел и все осталось мне. А так как времена игр умерли давно, то теперь пришел черед левых программ (автоботы и .т.п.). Каждое задание связано не только с интернетом – приходиться подтягиваться по многим направлениям. :)))

Мне непонятно почему оторвался break;

   
 
 автор: kasmanaft   (23.01.2008 в 19:14)   письмо автору
 
   для: Indemion   (23.01.2008 в 19:02)
 

> Да уж поверьте.
Да я верю, че уж там... Просто вы выразились интересно :)

> Мне непонятно почему оторвался break;
То есть?

PS автор кода, что наверху, тоже, видимо, не понимал, что пишет). Не лучший пример использования сего do{}while(0)... Да и вообще, может быть, это и удобно в некоторых случаях, но код запутывает.

   
 
 автор: Indemion   (23.01.2008 в 23:44)   письмо автору
 
   для: kasmanaft   (23.01.2008 в 19:14)
 

Про break: извините, видимо я сильно заработался. Забыл, что если строка не закрыта знаком "точка с запятой", то её можно продолжить на следующей. Понял уже по дороге домой.

К PS: я изучаю магазин, там код похожий. Думаю, что запутывают намеренно – защищают ИС.

   
 
 автор: cheops   (24.01.2008 в 14:47)   письмо автору
 
   для: Indemion   (23.01.2008 в 17:09)
 

>Старый, но рабочий?
>Если "да", то хочу понять этот стиль. По долгу службы мне приходится разбирать десятки кодов.
В PHP3 были не все функции, которые присутствуют в современной версии языка, поэтому для совместимости с ним вводились самые разнообразные самописанные функции, ведь работу, которую выполняют функции вроде explode() тоже можно запрограммировать в виде самописанной функции...

   
 
 автор: kasmanaft   (24.01.2008 в 16:04)   письмо автору
 
   для: cheops   (24.01.2008 в 14:47)
 

Речь не о том...
Насколько я понял, под старым стилем подразумевается использование
do 
    { 
        if (is_file($file_name))  
            break; 
        return false; 
    } while(0); 
}

а не
if (!is_file($file_name))  
        return false; 
}

   
 
 автор: Indemion   (25.01.2008 в 21:33)   письмо автору
 
   для: kasmanaft   (24.01.2008 в 16:04)
 

Спасибо за пояснения.
А подскажите, пожалуйста, зачем вызывать exit(), когда далее следует большой и нужный кусок программы.

<?
function shema($path)
{
    global 
$_SESSION;
    global 
$_ENV;
    exit( ); 
   
# а дальше следует огромный кусок кода, который никогда не будет исполняться???
}
?>

   
 
 автор: Unkind   (26.01.2008 в 00:51)   письмо автору
 
   для: Indemion   (25.01.2008 в 21:33)
 

На момент отладки может понадобится. Не более.

   
 
 автор: Faraon   (26.01.2008 в 01:05)   письмо автору
 
   для: Unkind   (26.01.2008 в 00:51)
 

Смотря в чем отлаживать, можно и точку останова поставить.

   
 
 автор: Unkind   (26.01.2008 в 01:11)   письмо автору
 
   для: Faraon   (26.01.2008 в 01:05)
 

Меня не интересует как и где можно заниматься отладкой. Я ответил с какой разумной целью там может стоять exit.

   
Rambler's Top100
вверх

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