Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Как оптимизировать код |
Автор: lemniscate 18.1.2013, 07:00 | ||||||
Добрый день уважаемый форумчане! Прошу вашей помощи и не закидать помидорами. Есть вот такой код, который выводит данные из бд в таблицу.
Суть проблемы такова, для каждого поля(колонки) нужно установить свое форматирование данных, например
сейчас я это реализовал на мой взгляд крайне коряво:
вот как то так. Все вроде бы и работает но хочется узнать может есть способ проще все сделать? да и время выполнения скажем так не очень для таблицы в 370 строк с 14 полями, время "генерации" такой таблицы составило 0.096 сек. При этом если полностью отключить форматирование то время выполнения составляет 0.018 разница чувствуется. |
Автор: Gold Dragon 18.1.2013, 12:52 |
а проще никак нельзя спросить? Я не понял сути вопроса |
Автор: lemniscate 18.1.2013, 13:03 |
проще, хм. ну если в двух словах, то надо для каждого выводимого значения из бд применять какой нибудь способ форматирования |
Автор: Gold Dragon 18.1.2013, 13:34 | ||
тогда тоже в двух слова.. что-то подобное я использую у себя в движках... Будем считать что есть массив данных полученных из базы, тогда всё очень просто
|
Автор: Aliance 18.1.2013, 14:21 |
Я писал около 1,5 лет назад Grid с выводом из БД и автоматической обработкой данных в зависимости от конфига. Весь код кидать не буду, он огромный, но суть такова, что я создавал конфиг, где указывал какой callback вызывать для определенного типа поля, соотв. значение направлялось в этот Callback, который уже выводил его определенным образом (там в инпуте, как число, etc). |
Автор: baldina 18.1.2013, 14:37 | ||
если не вдаваться в детали форматирования, то здесь налицо каскад if. кстати, некоторое ускорение можно получить, используя else: если $this->formaValParam[$fld][0] равно 'input', то оно точно не равно 'inputCheck' и т.д. упростить код можно, если $this->formaValParam[$fld] будет объектом полиморфного типа (с переопределенной функцией типа formatValue) тогда большая функция formatValue разделяется на множество маленьких, каждая из которых форматирует свой тип значения что-то типа
и работать быстрее будет Добавлено через 54 секунды так тоже хорошо |
Автор: Gold Dragon 18.1.2013, 15:32 |
baldina, а не слишком ли для простой задачи создавать абстрактные классы? ![]() |
Автор: baldina 18.1.2013, 16:06 |
для данной думаю не слишком. она кстати не настолько простая, да и такое решение может быть использовано повторно. само использование классов в данном случае добавит не слишком большой процент новых строк, хотя выбор имени calbback функции непосредственно из БД конечно лаконичнее. выбор между callback функциями и объектами может быть сделан исходя из характера и числа параметров форматтеров, наличия/отсутствия одинакового кода в форматтерах и вкусов разработчика. |