vendor/sylius/sylius/src/Sylius/Component/Addressing/Model/Country.php line 21

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Sylius package.
  4.  *
  5.  * (c) Paweł Jędrzejewski
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. declare(strict_types=1);
  11. namespace Sylius\Component\Addressing\Model;
  12. use Doctrine\Common\Collections\ArrayCollection;
  13. use Doctrine\Common\Collections\Collection;
  14. use Sylius\Component\Resource\Model\ToggleableTrait;
  15. use Symfony\Component\Intl\Countries;
  16. class Country implements CountryInterface\Stringable
  17. {
  18.     use ToggleableTrait;
  19.     /** @var mixed */
  20.     protected $id;
  21.     /**
  22.      * Country code ISO 3166-1 alpha-2.
  23.      * @var string|null
  24.      */
  25.     protected $code;
  26.     /**
  27.      * @var Collection|ProvinceInterface[]
  28.      *
  29.      * @psalm-var Collection<array-key, ProvinceInterface>
  30.      */
  31.     protected $provinces;
  32.     public function __construct()
  33.     {
  34.         /** @var ArrayCollection<array-key, ProvinceInterface> $this->provinces */
  35.         $this->provinces = new ArrayCollection();
  36.     }
  37.     public function __toString(): string
  38.     {
  39.         return (string) ($this->getName() ?? $this->getCode());
  40.     }
  41.     public function getId()
  42.     {
  43.         return $this->id;
  44.     }
  45.     public function getCode(): ?string
  46.     {
  47.         return $this->code;
  48.     }
  49.     public function setCode(?string $code): void
  50.     {
  51.         $this->code $code;
  52.     }
  53.     public function getName(?string $locale null): ?string
  54.     {
  55.         return Countries::getName($this->code$locale);
  56.     }
  57.     public function getProvinces(): Collection
  58.     {
  59.         return $this->provinces;
  60.     }
  61.     public function hasProvinces(): bool
  62.     {
  63.         return !$this->provinces->isEmpty();
  64.     }
  65.     public function addProvince(ProvinceInterface $province): void
  66.     {
  67.         if (!$this->hasProvince($province)) {
  68.             $this->provinces->add($province);
  69.             $province->setCountry($this);
  70.         }
  71.     }
  72.     public function removeProvince(ProvinceInterface $province): void
  73.     {
  74.         if ($this->hasProvince($province)) {
  75.             $this->provinces->removeElement($province);
  76.             $province->setCountry(null);
  77.         }
  78.     }
  79.     public function hasProvince(ProvinceInterface $province): bool
  80.     {
  81.         return $this->provinces->contains($province);
  82.     }
  83. }