'US' ]; public function __construct(public array $address) { if(strlen($this->address['state']) > 2) { $this->address['state'] = $this->address['country'] == 'US' ? array_search($this->address['state'], USStates::$states) : CAProvinces::getAbbreviation($this->address['state']); } $this->attributes = $this->newAttributeBag( Arr::only( Arr::mapWithKeys($this->address, function ($item, $key) { return in_array($key, ['address1','address2','state']) ? [ (['address1' => 'address_1','address2' => 'address_2','state' => 'province_code'])[$key] => $item ] : [ $key => $item ]; }), $this->fields ) ); } public function render() { return render('gateways.rotessa.components.address', $this->attributes->getAttributes() + $this->defaults); } }