Вы не зашли.
    
    Главная » 
PHP » Использование пользовательских функций
 
        
        
                Назрел такой вопрос... замедляют ли работу скрипта использование (частое) пользовательских функций? Точнее, как сильно замедляют?
Вот пример, часть типичной гостевой книги, MySQL, упрощённый вариант, без навигации: 
Код:
| $sql = mysql_query("SELECT (*) FROM `guest` ORDER BY `time` DESC ;"); | 
| while ($message_user = mysql_fetch_array($req)) | 
|         { | 
|         switch ($message_user['sex']) | 
|                     { | 
|                         case "m": | 
|                             echo '<img src="../images/m.gif" alt=""/> '; | 
|                             break; | 
|                         case "zh": | 
|                             echo '<img src="../images/f.gif" alt=""/> '; | 
|                        break; | 
|                     }  | 
|       switch ($message_user['level']) | 
|                 { | 
|                      case 1: | 
|                           echo 'админ'; | 
|                     case 2: | 
|                      /*и так далее выводим в зависимости от записи в базе определённую   должность*/ | 
|                 }        | 
|        } | 
 
        
        
                
     
        
        
                .....Будет проще для отображения статуса, пола, положения ONLINE/OFFLINE, аватара в конце концов создать функции, которые можно будет использовать и в форуме, в чате, в блогах...но сильно ли использование этих функций будет тормозить скрипт?... 
Пример:
Код:
| function GetStatus ($level) | 
| { | 
| $level = intval($level); | 
| if ($level === 2) return " <span style=\"color:#EA6000\">[Модер]</span>"; | 
| elseif ($level === 6) return " <span style=\"color:#F23600\">[Старший модер]</span>"; | 
| elseif ($level === 7) return " <span style=\"color:red\">[Админ]</span>"; | 
| elseif ($level === 1) return " <span style=\"color:#84BB44\">[Киллер]</span>"; | 
| } | 
|   | 
| function GetSex ($sex) | 
| { | 
| $level = intval($level); | 
| if ($level === 0) return " <span style=\"color:#000\">Мужик!</span>"; | 
| elseif ($level === 1) return " <span style=\"color:#f00\">Дама</span>"; | 
| } | 
| $sql = mysql_query("SELECT (*) FROM `guest` ORDER BY `time` DESC ;"); | 
| while ($message_user = mysql_fetch_array($req)) | 
|  { | 
| echo GetSex ($message_user['sex']) | 
| echo GetStatus ($message_user['level']) ; | 
|  } | 
 Добавлено спустя   9 минут  34 секунды: поправка: везде while ($message_user = mysql_fetch_array($sql)) а не while ($message_user = mysql_fetch_array($req))
---------------------------------------------------------------------
Вот ещё. Я смотред wapmod downloads, он целиком и полностью сделан на функциях... это и есть ООП?.. а то я не врублю)) 
Тот скрипт(wapmod downloads) я очень долго разбирал, пытался понять что к чему, я скрипт подобного типа видел впервые, но когда разобрался...мм его просто было удовольствием модернизировать и улучшать, я добавил туда возможность чтения .txt файлов, теперь его можно использовать и как библиотеку... но не в этом дело. Он довольно медленный. Медленный, хотя скриншоты берёт из "кэша"... это из-за того что большинство скрипта - функции? Но благодаря этим функциям появляется огроооомная функциональность(сорри за тавтологию)... и приходиться жертвовать скоростью, да?...
        
        
                
    
 
        
        
                нет, ООП это не функции, это - 
подход к программированию, образ мышления чтоли.
то, что ты называешь функцией, в ООП называется методом.
А вообще функции это потрясающая вещь, да, они работают медленне чем если бы просто писать функциями PHP (ООП работает еще медленней к слову).
Не забывай что большую роль в производительности играег грамотное построение БД и как следствие грамотное использование SQL запросов. Следует стараться избегать делать SQL запросы в циклах. А так же чаще использовать оператор 
LIMIT (если SELECT, то вообще всегда). Это я к тому, почему может тормозить, скажем, приведенный выше код. На счет wapmod_downloads я уже и не помню его кода, но тормоза совсем не обязательно могут быть от обилия пользовательских функций.
Но благодаря этим функциям появляется огроооомная функциональность(сорри за тавтологию)... и приходиться жертвовать скоростью, да?...
именно так) но чем больше будет становиться код, тем легче его будет модифицировать. ООП вроде бы еще дальше в этом направлении продвинулся... по крайней мере так многие утверждают. Я лично оч люблю имнно такой функциональный подход, а не ООП.
        
        
                
    
 
        
        
                        
                        #4.
            AntiKilеr
                        
                        Гость
                        2008.08.01 23:11
                                                                                            
                                            
                                                        
 
                Спасибо за развернутый ответ

 А ты почему не напишешь собственную CMS?
        
        
                
    
 
        
        
                а зачем? я не хочу. а на данный момент и времени все равно уже нет.
        
        
                
    
 
        
        
                Gemorroj написал:
а зачем? я не хочу. а на данный момент и времени все равно уже нет.
a кoдиш eщo?дa блин c чeвo нaчaть учить php?ну и cкoкa ты eвo нaпpимep учил?
        
        
                            
                ТA НУ ЩO Я ТУТ НAПИШУ
            
        
     
        
        
                я сейчас из-за компа не вылазию. на том что заработаю в инете, на то и живу, поэтому сейчас занимаюсь только платными проектами.
        
        
                
    
 
        
        
                Учить нужно скачав 3 книжки по пыху и взяв в руки скрипт гостевой книги от Гига. Я во всяком случае так начинал учить
        
        
                
    
 
        
        
                У этой гости бага серьезная есть кстати. Там данные храняться разделенные символами 
||| кажется, и используя их, при написаеии нового сообщения, можно, испортить БД.
        
        
                
    
 
        
        
                Разделяются ||
Этот знак экранируется знаком "!", точнее, заменяется им. str_replace ('|','!',$msg);
во всяком случае это в самой последней версии так
        
        
                
    
 
        
        
                AntiKiller написал:
Учить нужно скачав 3 книжки по пыху и взяв в руки скрипт гостевой книги от Гига. Я во всяком случае так начинал учить
чo зa книжки?и чeм eтa гocтeвaя ocoбeннaя?
        
        
                            
                ТA НУ ЩO Я ТУТ НAПИШУ
            
        
     
        
        
                идёш на books.ru и заказываешь себе книжку PHP5 в подлиннике
(очень полезная книжка "для начинающего" и нетолько) 
прочитав эту 1000 страниц тебе уже многое будет понятно и даже сможеш что нить своё написать,
так же ковыряй скрипты,
так сказать, сам так делал/делаю)))
        
        
                            
                ska ska ska
            
        
     
        
        
                Я сам сейчас иногда Котерова PHP5 иногда читаю, отличная книга. Жалко что в djvu 12 метров весит.
        
        
                
    
 
        
        
                м) у меня на компе она тож была)
сейчас другую начал читать) про MySql тож целый бестцеллер))) 1000 страниц
        
        
                            
                ska ska ska