PHP code example of rodrigopedra / file-tagged-cache
1. Go to this page and download the library: Download rodrigopedra/file-tagged-cache library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Illuminate\Support\Facades\Cache;
Cache::store('posts')->tags(['a-tag', 'another-tag'])->put('key', 'Hello World!');
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use RodrigoPedra\FileTaggedCache\Contracts\CacheTaggable;
use RodrigoPedra\FileTaggedCache\Model\HasCacheTag;
use RodrigoPedra\FileTaggedCache\Model\TaggedCacheObserver;
class Post extends Model implements CacheTaggable
{
use HasCacheTag;
public function author() {
return $this->belongsTo(Author::class);
}
public function comments() {
return $this->hasMany(Comment::class);
}
public static function booted() {
static::observe(TaggedCacheObserver::class);
}
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use RodrigoPedra\FileTaggedCache\Contracts\CacheTaggable;
use RodrigoPedra\FileTaggedCache\Model\HasCacheTag;
use RodrigoPedra\FileTaggedCache\Model\TaggedCacheObserver;
class Author extends Model implements CacheTaggable
{
use HasCacheTag;
public function posts() {
return $this->hasMany(Post::class);
}
public static function booted() {
static::observe(TaggedCacheObserver::class);
}
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
protected $touches = [
'post',
];
public function post() {
return $this->belongsTo(Post::class);
}
}
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use RodrigoPedra\FileTaggedCache\Model\TaggedCacheObserver;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
$this->app->when(TaggedCacheObserver::class)->needs('$store')->give('posts');
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}
}
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Str;
class PostsController extends Controller
{
public function index(Request $request, Post $post)
{
$cacheKey = Str::slug($request->path());
return Cache::store('posts')
->tags([$post, $post->author]) // tagging by post and author
->sear($cacheKey, function () use ($post) {
// IMPORTANT: call ->render() to cache the rendered view string
return view('posts.show', [
'post' => $post,
'author' => $post->author,
'comments' => $post->comments,
])->render();
});
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.