moodle/lib/maxmind/GeoIp2/Model/AbstractModel.php
Dan Poltawski eacc36a26b MDL-48766 lib: Import MaxMind GeoIP2 PHP API
No changes from the upstream version have been made, it is recommended by
upstream to install these depdencies via composer - but the composer
installation is bundled with a load of test files, shell scripts etc (and
we don't use composer to manage 'production dependencies') so we have to
do it manually.
2016-09-19 08:59:38 +01:00

63 lines
1.0 KiB
PHP

<?php
namespace GeoIp2\Model;
use GeoIp2\Compat\JsonSerializable;
/**
* @ignore
*/
abstract class AbstractModel implements JsonSerializable
{
protected $raw;
/**
* @ignore
*/
public function __construct($raw)
{
$this->raw = $raw;
}
/**
* @ignore
*/
protected function get($field)
{
if (isset($this->raw[$field])) {
return $this->raw[$field];
} else {
if (preg_match('/^is_/', $field)) {
return false;
} else {
return null;
}
}
}
/**
* @ignore
*/
public function __get($attr)
{
if ($attr != "instance" && property_exists($this, $attr)) {
return $this->$attr;
}
throw new \RuntimeException("Unknown attribute: $attr");
}
/**
* @ignore
*/
public function __isset($attr)
{
return $attr != "instance" && isset($this->$attr);
}
public function jsonSerialize()
{
return $this->raw;
}
}