You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.2 KiB
67 lines
1.2 KiB
2 years ago
|
<?php
|
||
|
|
||
|
namespace GeoIp2\Record;
|
||
|
|
||
|
abstract class AbstractPlaceRecord extends AbstractRecord
|
||
|
{
|
||
|
private $locales;
|
||
|
|
||
|
/**
|
||
|
* @ignore
|
||
|
*
|
||
|
* @param mixed $record
|
||
|
* @param mixed $locales
|
||
|
*/
|
||
|
public function __construct($record, $locales = ['en'])
|
||
|
{
|
||
|
$this->locales = $locales;
|
||
|
parent::__construct($record);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @ignore
|
||
|
*
|
||
|
* @param mixed $attr
|
||
|
*/
|
||
|
public function __get($attr)
|
||
|
{
|
||
|
if ($attr === 'name') {
|
||
|
return $this->name();
|
||
|
}
|
||
|
|
||
|
return parent::__get($attr);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @ignore
|
||
|
*
|
||
|
* @param mixed $attr
|
||
|
*/
|
||
|
public function __isset($attr)
|
||
|
{
|
||
|
if ($attr === 'name') {
|
||
|
return $this->firstSetNameLocale() === null ? false : true;
|
||
|
}
|
||
|
|
||
|
return parent::__isset($attr);
|
||
|
}
|
||
|
|
||
|
private function name()
|
||
|
{
|
||
|
$locale = $this->firstSetNameLocale();
|
||
|
|
||
|
return $locale === null ? null : $this->names[$locale];
|
||
|
}
|
||
|
|
||
|
private function firstSetNameLocale()
|
||
|
{
|
||
|
foreach ($this->locales as $locale) {
|
||
|
if (isset($this->names[$locale])) {
|
||
|
return $locale;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return null;
|
||
|
}
|
||
|
}
|