interface TaskInterface {
public function check(): bool;
public function run(): void;
}
class Sheduler {
public function each(TaskInterface ...$tasks) {
foreach ($tasks as $task) {
if ($task->check()){
$task->run();
}
}
}
}
// Функцию кэширования запроса писать не буду, это элементарно.
$tasks = $cache->get(function () {
return 'Достаем из базы все запланированные таски';
})
$sheduler = new Scheduler();
$sheduler->each($tasks);
class VotingTask implements TaskInterface {
public function check(): bool {
// Достать из базы или кэша время окончания всех активных голосований
}
public function run(): void {
// Выполнить необходимые действия
}
}
e.target.closest('.item-class')
Согласование, подавление помех и т.д. — я как минимум об этом. Разъем в ноуте и разъем, на конце воткнутого в него двухметрового кабеля — не одно и то же.
function price_format(int|float $price): string {
return str_replace('.00', '', number_format($price, 2, '.', ' ');
}
echo price_format(1234);
echo price_format(1234.45);
Нет, такой не получится.
<div class="outer">
<div class="block-2"></div>
<div class="block-1"></div>
</div>
.outer:has(.block-2 + .block-1:hover) > .block-2 {
background: black;
}