<?php namespace App\Casts; use Illuminate\Contracts\Database\Eloquent\CastsAttributes; use Illuminate\Database\Eloquent\Model; class CompressedString implements CastsAttributes { /** * Cast the given value. * * @param Model $model * @param string $key * @param mixed $value * @param array $attributes * @return string|null */ public function get($model,string $key,$value,array $attributes): ?string { return $value ? zstd_uncompress(base64_decode($value)) : NULL; } /** * Prepare the given value for storage. * * @param Model $model * @param string $key * @param mixed $value * @param array $attributes * @return string|null */ public function set($model,string $key,$value,array $attributes): ?string { return $value ? base64_encode(zstd_compress($value)) : NULL; } }