Skip to content

Commit cf08e6d

Browse files
committed
Refactored out checking of Cachable trait
(instead of looking if method exists) Fixes #81 #57
1 parent a755769 commit cf08e6d

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

src/Console/Commands/Flush.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ public function handle()
1919
}
2020

2121
$model = new $option;
22+
$usesCachableTrait = collect(class_uses($model))
23+
->contains("GeneaLabs\LaravelModelCaching\Traits\Cachable");
2224

23-
if (! method_exists($model, 'flushCache')) {
25+
if (! $usesCachableTrait) {
2426
$this->error("'{$option}' is not an instance of CachedModel.");
2527
$this->line("Only CachedModel instances can be flushed.");
2628

src/Traits/Cachable.php

+13-2
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,25 @@ protected function cache(array $tags = [])
2222
}
2323

2424
if (is_subclass_of($cache->getStore(), TaggableStore::class)) {
25-
array_push($tags, str_slug(get_called_class()));
26-
25+
$tags = $this->addTagsWhenCalledFromCachedBuilder($tags);
2726
$cache = $cache->tags($tags);
2827
}
2928

3029
return $cache;
3130
}
3231

32+
protected function addTagsWhenCalledFromCachedBuilder(array $tags) : array
33+
{
34+
$usesCachableTrait = collect(class_uses($this))
35+
->contains("GeneaLabs\LaravelModelCaching\Traits\Cachable");
36+
37+
if (! $usesCachableTrait) {
38+
array_push($tags, str_slug(get_called_class()));
39+
}
40+
41+
return $tags;
42+
}
43+
3344
public function disableCache()
3445
{
3546
cache()->forever(self::$isCachableKey, true);

0 commit comments

Comments
 (0)