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 MaxMind\Db\Reader; >
> use ArgumentCountError; /** >
* This class provides the metadata for the MaxMind DB file.
< * < * @property int $nodeCount This is an unsigned 32-bit < * integer indicating the number of < * nodes in the search tree. < * @property int $recordSize This is an unsigned 16-bit < * integer. It indicates the number < * of bits in a record in the search < * tree. Note that each node < * consists of two records. < * @property int $ipVersion This is an unsigned 16-bit < * integer which is always 4 or 6. < * It indicates whether the database < * contains IPv4 or IPv6 address < * data. < * @property string $databaseType This is a string that indicates < * the structure of each data record < * associated with an IP address. < * The actual definition of these < * structures is left up to the < * database creator. < * @property array $languages An array of strings, each of < * which is a language code. A given < * record may contain data items < * that have been localized to some < * or all of these languages. This < * may be undefined. < * @property int $binaryFormatMajorVersion This is an unsigned 16-bit < * integer indicating the major < * version number for the database's < * binary format. < * @property int $binaryFormatMinorVersion This is an unsigned 16-bit < * integer indicating the minor < * version number for the database's < * binary format. < * @property int $buildEpoch This is an unsigned 64-bit < * integer that contains the < * database build timestamp as a < * Unix epoch value. < * @property array $description This key will always point to a < * map (associative array). The keys < * of that map will be language < * codes, and the values will be a < * description in that language as a < * UTF-8 string. May be undefined < * for some databases.
*/ class Metadata {
< private $binaryFormatMajorVersion; < private $binaryFormatMinorVersion; < private $buildEpoch; < private $databaseType; < private $description; < private $ipVersion; < private $languages; < private $nodeByteSize; < private $nodeCount; < private $recordSize; < private $searchTreeSize;
> /** > * This is an unsigned 16-bit integer indicating the major version number > * for the database's binary format. > * > * @var int > */ > public $binaryFormatMajorVersion; > /** > * This is an unsigned 16-bit integer indicating the minor version number > * for the database's binary format. > * > * @var int > */ > public $binaryFormatMinorVersion; > /** > * This is an unsigned 64-bit integer that contains the database build > * timestamp as a Unix epoch value. > * > * @var int > */ > public $buildEpoch; > /** > * This is a string that indicates the structure of each data record > * associated with an IP address. The actual definition of these > * structures is left up to the database creator. > * > * @var string > */ > public $databaseType; > /** > * This key will always point to a map (associative array). The keys of > * that map will be language codes, and the values will be a description > * in that language as a UTF-8 string. May be undefined for some > * databases. > * > * @var array > */ > public $description; > /** > * This is an unsigned 16-bit integer which is always 4 or 6. It indicates > * whether the database contains IPv4 or IPv6 address data. > * > * @var int > */ > public $ipVersion; > /** > * An array of strings, each of which is a language code. A given record > * may contain data items that have been localized to some or all of > * these languages. This may be undefined. > * > * @var array > */ > public $languages; > /** > * @var int > */ > public $nodeByteSize; > /** > * This is an unsigned 32-bit integer indicating the number of nodes in > * the search tree. > * > * @var int > */ > public $nodeCount; > /** > * This is an unsigned 16-bit integer. It indicates the number of bits in a > * record in the search tree. Note that each node consists of two records. > * > * @var int > */ > public $recordSize; > /** > * @var int > */ > public $searchTreeSize;
< public function __construct($metadata)
> public function __construct(array $metadata)
{
> if (\func_num_args() !== 1) { $this->binaryFormatMajorVersion = > throw new ArgumentCountError( $metadata['binary_format_major_version']; > sprintf('%s() expects exactly 1 parameter, %d given', __METHOD__, \func_num_args()) $this->binaryFormatMinorVersion = > ); $metadata['binary_format_minor_version']; > } $this->buildEpoch = $metadata['build_epoch']; >
$this->databaseType = $metadata['database_type']; $this->languages = $metadata['languages']; $this->description = $metadata['description']; $this->ipVersion = $metadata['ip_version']; $this->nodeCount = $metadata['node_count']; $this->recordSize = $metadata['record_size']; $this->nodeByteSize = $this->recordSize / 4; $this->searchTreeSize = $this->nodeCount * $this->nodeByteSize;
< } < < public function __get($var) < { < return $this->$var;
} }