dan/laravel-cached

您的Laravel模型,装饰、缓存并易于访问。

v0.1.0 2022-03-16 13:39 UTC

README

一个感觉更像 更多 Laravel 的缓存装饰器。

亮点

使用辅助工具的使用方法

示例

// Fetch a model from the cache
$user = cached(User::class, 1);                 // App\User

// The default decorated class or 
// CACHE_DECORATOR specified on model.
$u = cached(User::class, 1, $decorate = true)   // More\Laravel\Cached\CacheDecorator

// A specific decorator to be returned
$u = cached(User::class, 1, Dashboard::class);  // App\Presenters\Dashboard

// A specific decorator to be returned
$u = cachedOrFail(User::class, 200000, Dashboard::class);  // throws ModelNotFoundException

使用宏的使用方法

示例

// Find a model from the cache / db
$user = User::cached($id = 1);                  // App\User

// Find or fail from the cache /db 
$user = User::cachedOrFail($id = 200000);       // throws ModelNotFoundException

// Fail with exception or decorate.
$u = User::cachedOrFail($id = 1)->decorate()    // More\Laravel\Cached\CacheDecorator

// Param can be used when model may not be found
$u = User::cached($id = 1, $decorate = true)    // More\Laravel\Cached\CacheDecorator

// A specific decorator to be returned
$u = User::cachedOrFail($id = 1)                // App\Presenters\Dashboard
    ->decorate(Dashboard::class);
    
// A specific decorator to be returned
$u = User::cached($id = 1, Dashboard::class);   // App\Presenters\Dashboard

更多关于装饰器的内容

默认包含了一个基本的 CacheDecorator。但您可以通过发布配置来切换全局默认值。

默认 CacheDecorator

$ php artisan vendor:publish --provider="\More\Laravel\Cached\Support\CachedServiceProvider"

模型常量 CACHE_DECORATOR

如果您的装饰器要求模型有各种缓存方法,您也可以在每个模型上覆盖全局行为。

class User extends Model
{
    const CACHE_DECORATOR = \App\Metrics\UserMetrics::class;
}

---

$user->decorate();                              // \App\Metrics\UserMetrics

运行时装饰

正如您在顶部的示例中已经看到的,您可以在运行时指定想要的装饰器。

建议

这种模式与 hemp/presenter 非常配合。只需扩展其 Presenter 类,添加包含的特质,并重载构造函数。

此外,使用即插即用的替换方法重载路由模型绑定将非常酷。

进行更多测试和发现,包括嵌套缓存遗忘和缓存预热。

Composer

$ composer require dan/laravel-cached dev-master

贡献者

许可证

MIT。