<?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 */ public function get($model,string $key,$value,array $attributes): string { return $value ? zstd_uncompress(base64_decode($value)) : ''; } /** * Prepare the given value for storage. * * @param Model $model * @param string $key * @param mixed $value * @param array $attributes * @return string */ public function set($model,string $key,$value,array $attributes): string { return $value ? base64_encode(zstd_compress($value)) : ''; } }