<?php
namespace Propaganistas\LaravelPhone\Casts;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Contracts\Database\Eloquent\SerializesCastableAttributes;
use Illuminate\Support\Arr;
use Propaganistas\LaravelPhone\Aspects\PhoneNumberCountry;
abstract class PhoneNumberCast implements CastsAttributes, SerializesCastableAttributes
{
protected array $parameters;
public function __construct()
{
$this->parameters = func_get_args();
}
protected function getPossibleCountries($key, array $attributes): array
{
$parameters = array_map(function ($parameter) use ($attributes) {
if ($value = Arr::get($attributes, $parameter)) {
return $value;
}
return $parameter;
}, [...$this->parameters, $key.'_country']);
return array_filter($parameters, function ($parameter) {
return PhoneNumberCountry::isValid($parameter);
});
}
}