You are here

AbstractRecord.php in Smart IP 7.2

Same filename and directory in other branches
  1. 6.2 includes/vendor/geoip2/geoip2/src/Record/AbstractRecord.php

Namespace

GeoIp2\Record

File

includes/vendor/geoip2/geoip2/src/Record/AbstractRecord.php
View source
<?php

namespace GeoIp2\Record;

use GeoIp2\Compat\JsonSerializable;
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;
  }

}

Classes

Namesort descending Description
AbstractRecord