street !== null; } /** * Whether has a city. */ public function hasCity() : bool { return $this->city !== null; } /** * Whether has a country. */ public function hasCountry() : bool { return $this->country !== null; } /** * Whether has a state. */ public function hasState() : bool { return $this->state !== null; } /** * Whether has a postal code. */ public function hasPostalCode() : bool { return $this->postalCode !== null; } /** * Get a street. */ public function getStreet() : ?string { return $this->street; } /** * Get a city.. */ public function getCity() : ?string { return $this->city; } /** * Get a country. */ public function getCountry() : ?string { return $this->country; } /** * Get a state. */ public function getState() : ?string { return $this->state; } /** * Get a postal code. */ public function getPostalCode() : ?string { return $this->postalCode; } /** * Clone with a street. */ public function withStreet(?string $street) : self { $newAddress = self::createBuilder() ->clone($this) ->setStreet($street) ->build(); return $newAddress; } /** * Clone with a city. */ public function withCity(?string $city) : self { $newAddress = self::createBuilder() ->clone($this) ->setCity($city) ->build(); return $newAddress; } /** * Clone with a country. */ public function withCountry(?string $country) : self { $newAddress = self::createBuilder() ->clone($this) ->setCountry($country) ->build(); return $newAddress; } /** * Clone with a state. */ public function withState(?string $state) : self { $newAddress = self::createBuilder() ->clone($this) ->setState($state) ->build(); return $newAddress; } /** * Clone with a postal code. */ public function withPostalCode(?string $postalCode) : self { $newAddress = self::createBuilder() ->clone($this) ->setPostalCode($postalCode) ->build(); return $newAddress; } /** * Create a RAW data. */ public static function fromRaw(array $raw) : self { $obj = new self(); $obj->street = $raw['street'] ?? null; $obj->city = $raw['city'] ?? null; $obj->country = $raw['country'] ?? null; $obj->state = $raw['state'] ?? null; $obj->postalCode = $raw['postalCode'] ?? null; return $obj; } /** * Create an empty address. */ public static function fromNothing() : self { return new self(); } /** * Create a builder. */ public static function createBuilder() : AddressBuilder { return new AddressBuilder(); } }