Повторное использование кода
- Одиночка Айс
- Сообщения: 267
- Зарегистрирован: 2010.02.05, 10:26
- Откуда: Алма-Ата, Казахстан
- Контактная информация:
Повторное использование кода
Итак, у нас есть функция, которая делает выборку из БД, затем прерывает foreach для проверки данных, затем опять возобновляет выборку. Ну так, вот, при выборке используется один и тот же код, то есть в функции он дублируется (довольно-таки увесистый). А теперь вопрос: как использовать один и тот же код внутри функции? Писать в ней другую?
Ни любви, ни тоски, ни жалости...
- timlar
- Сообщения: 1382
- Зарегистрирован: 2009.09.19, 17:49
- Откуда: Украина, Днепропетровск
- Контактная информация:
Re: Повторное использование кода
Обычная рекурсия. Т.е. вызов функции из самой себя по определенному условию, чтобы не получился замкнутый цикл. В интернете довольно много простеньких примеров, чтобы понять принцип.
Twitter: @timlar_ua
Re: Повторное использование кода
а вы фунцию покажите, а то как то не понятно, что и зачем у вас там прерывается, что за повторная выборка...
- Одиночка Айс
- Сообщения: 267
- Зарегистрирован: 2010.02.05, 10:26
- Откуда: Алма-Ата, Казахстан
- Контактная информация:
Re: Повторное использование кода
Код менять муторно и долго. Поэтому постараюсь описать на пальцах:
1. Приходят постом данные;
2. Делаем выборку из БД а ля model()->findAll($criteria)
3. Если результат не пустой, выводим "шапку таблицы", если обратное - то ошибку;4. Далее, опять делаем выборку из БД, с таким же $criteria и выводим уже результаты поиска.Код: Выделить всё
if($tsr!=NULL){ echo $main_res;//это "шапка" } else { echo $error; }
Ни любви, ни тоски, ни жалости...
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: Повторное использование кода
а CGridView здесь не подходит ?
- Одиночка Айс
- Сообщения: 267
- Зарегистрирован: 2010.02.05, 10:26
- Откуда: Алма-Ата, Казахстан
- Контактная информация:
Re: Повторное использование кода
Нет, это же не админка, где пофиг как данные выводятся, а ковыряться в файлах самого yii мне не в кайф, чтобы дизайн поменять.
Ни любви, ни тоски, ни жалости...
Re: Повторное использование кода
ну во первых тут скорее всего можно обойтись одним запросом.
но в любом случае вынос запросов в отдельный слой (сервис-слой) является хорошей практикой.
так что, создаете класс сервис слоя, допустим NewsManager
в нем реализуем статический метод для выборки, а в аргументах будем передавать значения из POST для построения запроса:
а в нужных местах вызываешь метод:
но в любом случае вынос запросов в отдельный слой (сервис-слой) является хорошей практикой.
так что, создаете класс сервис слоя, допустим NewsManager
в нем реализуем статический метод для выборки, а в аргументах будем передавать значения из POST для построения запроса:
Код: Выделить всё
public static function getNewsForMyPage($query, $sort)
{
$criteria = new CDbCriteria;
$criteria->addSearchCondition($query);
$criteria->order = $sort;
return News::model()->findAll($criteria);
}
Код: Выделить всё
$news=NewsManager::getNewsForMyPage($_POST['query'], $_POST['sort']);