You are here

abstract class AbstractRecord in Smart IP 7.2

Same name and namespace in other branches
  1. 6.2 includes/vendor/geoip2/geoip2/src/Record/AbstractRecord.php \GeoIp2\Record\AbstractRecord

Hierarchy

  • class \GeoIp2\Record\AbstractRecord implements \GeoIp2\Compat\JsonSerializable

Expanded class hierarchy of AbstractRecord

File

includes/vendor/geoip2/geoip2/src/Record/AbstractRecord.php, line 7

Namespace

GeoIp2\Record
View source
abstract class AbstractRecord implements JsonSerializable {
  private $record;

  /**
   * @ignore
   */
  public function __construct($record) {
    $this->record = isset($record) ? $record : array();
  }

  /**
   * @ignore
   */
  public function __get($attr) {

    // XXX - kind of ugly but greatly reduces boilerplate code
    $key = $this
      ->attributeToKey($attr);
    if ($this
      ->__isset($attr)) {
      return $this->record[$key];
    }
    elseif ($this
      ->validAttribute($attr)) {
      if (preg_match('/^is_/', $key)) {
        return false;
      }
      else {
        return null;
      }
    }
    else {
      throw new \RuntimeException("Unknown attribute: {$attr}");
    }
  }
  public function __isset($attr) {
    return $this
      ->validAttribute($attr) && isset($this->record[$this
      ->attributeToKey($attr)]);
  }
  private function attributeToKey($attr) {
    return strtolower(preg_replace('/([A-Z])/', '_\\1', $attr));
  }
  private function validAttribute($attr) {
    return in_array($attr, $this->validAttributes);
  }
  public function jsonSerialize() {
    return $this->record;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
AbstractRecord::$record private property
AbstractRecord::attributeToKey private function
AbstractRecord::jsonSerialize public function
AbstractRecord::validAttribute private function
AbstractRecord::__construct public function @ignore 1
AbstractRecord::__get public function @ignore 1
AbstractRecord::__isset public function