using new style of attribute casting

This commit is contained in:
2023-12-12 13:57:42 -07:00
parent 9e6c93ba95
commit ecfae3e01a

View File

@ -2,19 +2,24 @@
namespace App\Models\Traits; namespace App\Models\Traits;
use Illuminate\Database\Eloquent\Casts\Attribute;
trait FormattedPhoneTrait trait FormattedPhoneTrait
{ {
/** /**
* Format a phone number to be human readable. * Format a phone number to be human readable.
* *
* @package Namespace\App\Contact
* @since 1.0.0 * @since 1.0.0
* *
* @return string * @return void
*/ */
public function getPhoneNumberAttribute(): string protected function phoneNumber(): Attribute
{ {
$phoneLength = strlen($this->phone); return Attribute::make(
$phoneNumber = preg_replace('//', '', $this->phone); get: function (mixed $value, array $attributes) {
$phoneLength = strlen($attributes['phone_number']);
$phoneNumber = preg_replace('/[^0-9]/', '', $attributes['phone_number']);
if ($phoneLength > 10) { if ($phoneLength > 10) {
$countryCode = substr($phoneNumber, 0, $phoneLength - 10); $countryCode = substr($phoneNumber, 0, $phoneLength - 10);
@ -37,19 +42,10 @@ trait FormattedPhoneTrait
} }
return $phoneNumber; return $phoneNumber;
} },
set: function (mixed $value) {
/** return preg_replace('/[^0-9]/', '', $value);
* Remove all non-numeric characters from the phone number. },
* );
* @since 1.0.0
*
* @param string $value
*
* @return void
*/
public function setPhoneNumberAttribute($value): void
{
$this->attributes['phone'] = preg_replace('/[^0-9]/', '', $value);
} }
} }