Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.

Differences Between: [Versions 310 and 402] [Versions 311 and 402] [Versions 39 and 402] [Versions 400 and 402] [Versions 401 and 402]

   1  <?php
   2  
   3  declare(strict_types=1);
   4  
   5  namespace GeoIp2\Record;
   6  
   7  abstract class AbstractPlaceRecord extends AbstractRecord
   8  {
   9      /**
  10       * @var array<string>
  11       */
  12      private $locales;
  13  
  14      /**
  15       * @ignore
  16       */
  17      public function __construct(?array $record, array $locales = ['en'])
  18      {
  19          $this->locales = $locales;
  20          parent::__construct($record);
  21      }
  22  
  23      /**
  24       * @ignore
  25       *
  26       * @return mixed
  27       */
  28      public function __get(string $attr)
  29      {
  30          if ($attr === 'name') {
  31              return $this->name();
  32          }
  33  
  34          return parent::__get($attr);
  35      }
  36  
  37      /**
  38       * @ignore
  39       */
  40      public function __isset(string $attr): bool
  41      {
  42          if ($attr === 'name') {
  43              return $this->firstSetNameLocale() !== null;
  44          }
  45  
  46          return parent::__isset($attr);
  47      }
  48  
  49      private function name(): ?string
  50      {
  51          $locale = $this->firstSetNameLocale();
  52  
  53          // @phpstan-ignore-next-line
  54          return $locale === null ? null : $this->names[$locale];
  55      }
  56  
  57      private function firstSetNameLocale(): ?string
  58      {
  59          foreach ($this->locales as $locale) {
  60              if (isset($this->names[$locale])) {
  61                  return $locale;
  62              }
  63          }
  64  
  65          return null;
  66      }
  67  }