LeadDetails class:namespace App\Services\Lead\LeadDetails;use App\Library\Localization\Currency;use App\Services\Lead\LeadDetails\MovingServices;use App\Services\Lead\VersionId;final class LeadDetails{    /**     * @var VersionId     */    private $id;    /**     * @var MovingAppointment     */    private $origin;    /**     * @var MovingAppointment     */    private $destination;    /**     * @var MovingServices\Stopovers     */    private $stopovers;    /**     * @var MovingServices\ParkingBan     */    private $parkingBan;    /**     * @var MovingServices\Storage     */    private $storage;    /**     * @var MovingServices\Insurance     */    private $insurance;    /**     * @var MovingServices\Kitchen     */    private $kitchen;    /**     * @var Comments     */    private $comments;    /**     * @var Distance     */    private $distance;    /**     * @var string     */    private $accountManager;    /**     * @var \App\Library\Localization\Currency     */    private $currency;    /**     * @var MovingServices\Cleaning     */    private $cleaning;    /**     * @param VersionId $id     * @param MovingAppointment $origin     * @param MovingAppointment $destination     * @param MovingServices\Stopovers $stopovers     * @param MovingServices\ParkingBan $parkingBan     * @param MovingServices\Storage $storage     * @param MovingServices\Insurance $insurance     * @param MovingServices\Kitchen $kitchen     * @param MovingServices\Cleaning $cleaning     * @param Comments $comments     * @param Distance $distance     * @param Currency $currency     * @param null $accountManager     */    public function __construct(        VersionId $id,        MovingAppointment $origin,        MovingAppointment $destination,        MovingServices\Stopovers $stopovers,        MovingServices\ParkingBan $parkingBan,        MovingServices\Storage $storage,        MovingServices\Insurance $insurance,        MovingServices\Kitchen $kitchen,        MovingServices\Cleaning $cleaning,        Comments $comments,        Distance $distance,        Currency $currency,        $accountManager = null    ) {        $this->id = $id;        $this->origin = $origin;        $this->destination = $destination;        $this->stopovers = $stopovers;        $this->storage = $storage;        $this->parkingBan = $parkingBan;        $this->insurance = $insurance;        $this->kitchen = $kitchen;        $this->cleaning = $cleaning;        $this->comments = $comments;        $this->distance = $distance;        $this->accountManager = $accountManager;        $this->currency = $currency;    }    /**     * @return VersionId     */    public function id()    {        return $this->id;    }    /**     * @return MovingAppointment     */    public function origin()    {        return $this->origin;    }    /**     * @return MovingAppointment     */    public function destination()    {        return $this->destination;    }    /**     * @return MovingServices\Stopovers     */    public function stopovers()    {        return $this->stopovers;    }    /**     * @return MovingServices\ParkingBan     */    public function parkingBan()    {        return $this->parkingBan;    }    /**     * @return MovingServices\Storage     */    public function storage()    {        return $this->storage;    }    /**     * @return MovingServices\Insurance     */    public function insurance()    {        return $this->insurance;    }    /**     * @return MovingServices\Kitchen     */    public function kitchen()    {        return $this->kitchen;    }    /**     * @return MovingServices\Cleaning     */    public function cleaning()    {        return $this->cleaning;    }    /**     * @return Comments     */    public function comments()    {        return $this->comments;    }    /**     * @return Distance     */    public function distance()    {        return $this->distance;    }    /**     * @return null|string     */    public function accountManager()    {        return $this->accountManager;    }    /**     * @return Currency     */    public function currency()    {        return $this->currency;    }    /**     * @return bool     */    public function isCrossBorder()    {        return $this->origin->countryId() != $this->destination->countryId();    }}MovingAppointment class:namespace App\Services\Lead\LeadDetails;use App\Library\Lead\Values\AppointmentDate;use App\Library\Lead\Values\AppointmentTime;use App\Library\System\ArrayData;use App\Library\Values\Address;final class MovingAppointment{    /**     * @var Address     */    private $address;    /**     * @var string     */    private $countryId;    /**     * @var AppointmentDate     */    private $date;    /**     * @var ArrayData     */    private $appartment;    /**     * @var AppointmentTime     */    private $time;    /**     * @param Address $address     * @param string $countryId     * @param AppointmentDate $date     * @param ArrayData $appartment     * @param AppointmentTime|null $time     */    public function __construct(        Address $address,        $countryId,        AppointmentDate $date,        ArrayData $appartment,        AppointmentTime $time = null    )    {        $this->address = $address;        $this->countryId = $countryId;        $this->date = $date;        $this->appartment = $appartment;        $this->time = $time;    }    public function address()    {        return $this->address;    }    public function countryId()    {        return $this->countryId;    }    public function date()    {        return $this->date;    }    public function appartment()    {        return $this->appartment;    }    public function time()    {        return $this->time;    }}Address class:namespace App\Library\Values;use App\Library\System\ArrayData;final class Address{    /**     * @var string     */    private $street;    /**     * @var string     */    private $city;    /**     * @var string     */    private $postalCode;    /**     * @var string     */    private $country;    /**     * @param string $street     * @param string $city     * @param string $postalCode     * @param string $country     */    public function __construct($street, $city, $postalCode, $country)    {        $this->street = $street;        $this->city = $city;        $this->postalCode = $postalCode;        $this->country = $country;    }    /**     * @return string     */    public function street()    {        return $this->street;    }    /**     * @return string     */    public function city()    {        return $this->city;    }    /**     * @return string     */    public function postalCode()    {        return $this->postalCode;    }    /**     * @return string     */    public function country()    {        return $this->country;    }    /**     * @return array     */    public function toArray()    {        return [            'street' => $this->street,            'zip_code' => $this->postalCode,            'city' => $this->city,            'country' => $this->country,        ];    }    /**     * @param array $data     * @return Address     */    public static function fromArray(array $data)    {        $data = new ArrayData($data);        return new self(            $data->get('street'),            $data->get('city'),            $data->get('zip_code'),            $data->get('country')        );    }}CountryType class:namespace App\Library\System;class isEuCountry{    private $euCountries = [        'AT', 'BE', 'BG', 'CH', 'CY', 'CZ', 'DE', 'DK', 'EE', 'EL',        'ES', 'FI', 'FR', 'GB', 'HU', 'IE', 'IT', 'LT', 'LU', 'LV',        'MT', 'NL', 'PL', 'PT', 'RO', 'SE', 'SI', 'SK'    ];    /**     * @var CountryCode     */    private $countryCode;    /**     * @param CountryCode $countryCode     */    public function __construct(CountryCode $countryCode)    {        $this->countryCode = $countryCode;    }    /**     * @return bool     */    public function applies()    {        return in_array(strtoupper($this->countryCode), $this->euCountries);    }}I want to create a functions called:public function isEu(){  return (new isEuCountry(**COUNTRY_CODE**))->applies();}Where in which level should I create this function, and why?Shall I create it in the LeadDetails class:public function isEu(){   return (new isEuCountry($this->origin->address->country())->applies();}Or shall I create it in the Address class?public function isEu(){   return (new isEuCountry($this->address->country())->applies();}
Function to classify address as EU or non-EU
php;object oriented;comparative review;geospatial