Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.
<?php

declare(strict_types=1);

namespace GeoIp2\Record;

abstract class AbstractRecord implements \JsonSerializable
{
> /** private $record; > * @var array<string, mixed> > */
/** * @ignore */ public function __construct(?array $record) { $this->record = isset($record) ? $record : []; } /** * @ignore
> * */ > * @return mixed
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 ($this->validAttribute($attr)) {
if (preg_match('/^is_/', $key)) { return false; } return null; }
>
throw new \RuntimeException("Unknown attribute: $attr"); } public function __isset(string $attr): bool {
< return $this->validAttribute($attr) && < isset($this->record[$this->attributeToKey($attr)]);
> return $this->validAttribute($attr) > && isset($this->record[$this->attributeToKey($attr)]);
} private function attributeToKey(string $attr): string { return strtolower(preg_replace('/([A-Z])/', '_\1', $attr)); } private function validAttribute(string $attr): bool {
> // @phpstan-ignore-next-line
return \in_array($attr, $this->validAttributes, true); } public function jsonSerialize(): ?array { return $this->record; } }