PHP code example of unionworx / laravel-serializes-models-with-cache

1. Go to this page and download the library: Download unionworx/laravel-serializes-models-with-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/ */

    

unionworx / laravel-serializes-models-with-cache example snippets


use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use UnionWorx\LaravelSerializesModelsWithCache\SerializesModelsWithCache;
use App\Models\Message;

class SendMessage
{
    use Dispatchable, InteractsWithQueue, SerializesModelsWithCache;
    
    public Message $message;

    public function handle()
    {
        // Your job logic
    }
}

use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheKey;
use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheTTL;
use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheSkip;
use App\Models\User;
use App\Models\Message;

class SendMessage
{
    use Dispatchable, InteractsWithQueue, SerializesModelsWithCache;

    #[CacheKey(key: 'custom_key_{id}')]
    #[CacheTTL(ttl: 120)]
    public Message $message;

    #[CacheSkip]
    public User $user;

    public function handle()
    {
        // Your job logic
    }
}

use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheKey;
use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheTTL;
use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheSkip;
use App\Models\User;
use App\Models\Message;

class SendMessage
{
    use Dispatchable, InteractsWithQueue, SerializesModelsWithCache;

    public Message $message;

    public User $user;

    public function handle()
    {
        // Your job logic
    }
    
    public function cacheKey(string $propertyName, mixed $id): ?string
    {
        if ($propertyName === 'message') {
            return 'custom_key_' . $id;
        }
    }
    
    public function cacheTTL(): array|DateInterval|DateTimeInterface|int|null
    {
        return [
            'message' => 120,
        ];
    }
    
    public function cacheSkip(): ?array
    {
        return [
            'user',
        ];
    }
}

use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheKey;
use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheTTL;
use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheSkip;
use App\Models\Message;

class SendMessage
{
    use Dispatchable, InteractsWithQueue, SerializesModelsWithCache;

    #[CacheKey(key: 'custom_key_{id}')]
    public Message $message;

    public function handle()
    {
        // Your job logic
    }
    
    public function cachePrefix(): ?string
    {
        return get_class($this);
    }
}

use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheKey;
use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheTTL;
use UnionWorx\LaravelSerializesModelsWithCache\Attributes\CacheSkip;
use App\Models\Message;

class SendMessage
{
    use Dispatchable, InteractsWithQueue, SerializesModelsWithCache;

    #[CacheKey(key: 'custom_key_{id}')]
    public Message $message;

    public function handle()
    {
        // Your job logic
    }
    
    public function cacheStoreName(): ?string
    {
        return 'file';
    }
}