familytree365/php-gedcom

PHP 8.0+ 的 GEDCOM 文件解析器(读取 + 写入)

v1.4.10 2021-11-28 12:13 UTC

README

Latest Stable Version Scrutinizer Code Quality Build Status Code Intelligence Status StyleCI CodeFactor codebeat badge Build Status

需求

  • php-gedcom 1.0+ 需要 PHP 8.0(或更高版本)。

安装

安装 php-gedcom 有两种方法。

Composer

要使用 composer 在项目中安装 php-gedcom,只需将以下 require 行添加到项目的 composer.json 文件中

{
    "require": {
        "familytree365/php-gedcom": "1.0.*"
    }
}

下载和 __autoload

如果您不使用 composer,可以从 GitHub 下载源代码存档并将其提取到您的项目中。您需要设置文件的自加载器,除非您愿意一个接一个地要求所有需要的文件,这是一个繁琐的过程。以下内容应该足够

spl_autoload_register(function ($class) {
    $pathToGedcom = __DIR__ . '/library/'; // TODO FIXME

    if (!substr(ltrim($class, '\\'), 0, 7) == 'Gedcom\\') {
        return;
    }

    $class = str_replace('\\', DIRECTORY_SEPARATOR, $class) . '.php';
    if (file_exists($pathToGedcom . $class)) {
        require_once($pathToGedcom . $class);
    }
});

用法

要解析 GEDCOM 文件并将其加载到 PHP 对象集合中,只需实例化一个新的解析器对象,并传递要解析的文件名。结果 Gedcom 对象将包含存储在提供的 GEDCOM 文件中的所有信息

$parser = new \Gedcom\Parser();
$gedcom = $parser->parse('tmp.ged');

foreach ($gedcom->getIndi() as $individual) {
    echo $individual->getId() . ': ' . current($individual->getName())->getSurn() .
        ', ' . current($indi->$individual())->getGivn();
}