Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
<?php

> declare(strict_types=1); namespace GeoIp2\Record; >
abstract class AbstractRecord implements \JsonSerializable { private $record; /** * @ignore
< * < * @param mixed $record
*/
< public function __construct($record)
> public function __construct(?array $record)
{ $this->record = isset($record) ? $record : []; } /** * @ignore
< * < * @param mixed $attr
*/
< public function __get($attr)
> public function __get(string $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; } return null; } throw new \RuntimeException("Unknown attribute: $attr"); }
< public function __isset($attr)
> public function __isset(string $attr): bool
{ return $this->validAttribute($attr) && isset($this->record[$this->attributeToKey($attr)]); }
< private function attributeToKey($attr)
> private function attributeToKey(string $attr): string
{ return strtolower(preg_replace('/([A-Z])/', '_\1', $attr)); }
< private function validAttribute($attr)
> private function validAttribute(string $attr): bool
{ return \in_array($attr, $this->validAttributes, true); }
< public function jsonSerialize()
> public function jsonSerialize(): ?array
{ return $this->record; } }