name = $name; $this->value = $value; $this->time = $time; } /** * Cache Repo * * @param string $name key * @param mixed $value value * @param int|int $time time in seconds */ public static function make(string $name, mixed $value, int $time = 600): mixed { $repo = new self($name, $value, $time); return $repo->handle(); } /** * Handle cache */ public function handle(): mixed { return cache()->has($this->name) ? cache($this->name) : cache()->remember( key: $this->name, ttl: $this->time, callback: fn () => is_callable($this->value) ? call_user_func($this->value) : $this->value ); } /** * Forget the key from cache */ public static function forget(string $name): void { cache()->forget($name); } }