Example #1
0
 public function sinceAge($name, $closure, $max, $args = [])
 {
     $row = Model::Since()->firstOrCreate(['name' => $name]);
     $when = $row->when;
     $value = $row->value;
     if ($when && $value) {
         $age = time() - (int) $when;
         if ($age > $max) {
             $data = call_user_func_array($closure, $args);
             $row->setWhen(time())->setValue(serialize($data))->save();
         } else {
             return unserialize($value);
         }
     }
     $data = call_user_func_array($closure, $args);
     $row->setWhen(time())->setValue(serialize($data))->save();
     return $data;
 }