mirror of
https://github.com/moodle/moodle.git
synced 2025-06-01 05:35:55 +02:00
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.
63 lines
1.0 KiB
PHP
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;
|
|
}
|
|
}
|