В общем для своего проекта (доска объявлений) решил запилить функцию продвижения объявлений как в Авито - выведение в топ. Для этого в таблице items добавляю два дополнительных поля к объявлению:
- promotion (может иметь значения 0 или 1)
- promotion_time (время продвижения, например 7 дней, задаем путем отсчета от текущего unix-времени + 604800 секунд, при проверке сверяем текущее время и записанное в базе)
И тут при выводе массива объявлений, для проверки продвигается ли объявление решил не пихать все проверки в свой процедурный код, а написал класс Promoter, который будет проверять является ли объявление продвигаемым и не истек ли период продвижения:
class Promoter {
private $item_id;
public function __construct($item_id){
$this->item_id = $item_id;
// $this->item_id будем дальше использовать при запросе в базу в методе checkPromotion().
}
public function checkPromotion(){
// Проверяем у item поле в базе, 0 или 1
// Если после первой проверки значение 1 -> Проверяем дату продвижения,
// если срок продвижения истек то записываем в поле БД "0" и возвращаем "0", если нет то возвращаем "1"
return $period == true ? 1 : 0;
}
}
$checkPromotion = new Promoter(1);
echo $checkPromotion->checkPromotion();
И тут весь юмор в том что у меня в этом классе всего одна функция ) Стоит ли ради этого городить такой огород?
P.S. Не судите строго за синтаксис и конструкцию, только постигаю ООП )