pandaac/exporter

v2.1.2 2017-06-13 14:23 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:58:42 UTC


README

熊猫AC导出器的目标是提供一个简单且快速的接口,用于从您的Open Tibia服务器数据目录中的常见XML文件中导出数据。

强烈建议您缓存响应,而不是反复解析它。

目前,此导出器假定您正在使用遗忘服务器 1.1。我没有立即计划将其扩展到其他任何发行版,直到我扩展pandaac自身的发行版范围。然而,如果有足够的公众压力要求特定的发行版,我可能会重新考虑。

要求

  • PHP 5.6.4+
  • PHP 扩展
    • libxml

安装

通过Composer
composer require pandaac/exporter

使用方法

将您的Open Tibia服务器的绝对路径作为Exporter对象的第一个参数传递,并指定您想要使用的解析器,作为Exporter对象的parse方法的第一个参数。

parse方法还接受第二个参数作为其他属性(取决于解析器),以及第三个参数用于覆盖默认文件路径(或为特定解析器提供一个路径)。

use Exception;
use pandaac\Exporter\Parsers;
use pandaac\Exporter\Exporter;

try {
    $exporter = new Exporter('/home/pandaac/theforgottenserver');

    $response = $exporter->parse(new Parsers\Weapons);
} catch (Exception $e) {
    // Handle exceptions as you see fit...
}
设置

您可以选择将特定于引擎的设置作为\pandaac\Exporter\Exporter对象的第二个参数传递。

$exporter = new Exporter('/home/pandaac/theforgottenserver', $settings);

以下是一些可用的设置(选择值是默认值)

$settings = [
    'xml' => [
        // The XML engine will automatically validate any file it tries to parse,
        // and if the data is invalid, an exception will be thrown. You may
        // disable this behaviour by setting `validate` to `false`.
        'validate' => true,

        // The XML engine will not throw exceptions on missing files when
        // parsing through a recursive structure. You may enable this
        // behaviour by setting `strict` to `true`.
        'strict' => false,
    ],
]

响应

每个解析器都返回一个Illuminate Collection对象。请参阅Laravel文档以获取有关如何利用它的详细信息。

解析器

解析器决定了如何解析某个文件以及如何构建其响应。使用正确的解析器解析正确的文件非常重要。

XML解析器

  • 操作

    $exporter->parse(new \pandaac\Exporter\Parsers\Actions);
  • 聊天频道

    $exporter->parse(new \pandaac\Exporter\Parsers\ChatChannels);
  • 命令

    $exporter->parse(new \pandaac\Exporter\Parsers\Commands);
  • 怪物脚本

    $exporter->parse(new \pandaac\Exporter\Parsers\CreatureScripts);
  • 事件

    $exporter->parse(new \pandaac\Exporter\Parsers\Events);
  • 全局事件

    $exporter->parse(new \pandaac\Exporter\Parsers\GlobalEvents);
  • $exporter->parse(new \pandaac\Exporter\Parsers\Groups);
  • 物品

    $exporter->parse(new \pandaac\Exporter\Parsers\Items);
  • 地图房屋

    您必须指定相对文件名作为第三个参数。

    $exporter->parse(new \pandaac\Exporter\Parsers\MapHouses, [], 'forgotten-house.xml');
  • 地图出生点

    您必须指定相对文件名作为第三个参数。

    $exporter->parse(new \pandaac\Exporter\Parsers\MapSpawns, [], 'forgotten-spawn.xml');
  • 怪物

    您必须指定相对文件名作为第三个参数。

    $exporter->parse(new \pandaac\Exporter\Parsers\Monster, [], 'Demons/Demon.xml');
  • 怪物

    您还可以通过将recursive属性设置为true,从每个单独的怪物文件中加载数据。

    $exporter->parse(new \pandaac\Exporter\Parsers\Monsters, [ 'recursive' => true ]);
  • 鞍具

    $exporter->parse(new \pandaac\Exporter\Parsers\Mounts);
  • 动作

    $exporter->parse(new \pandaac\Exporter\Parsers\Movements);
  • NPC

    您必须指定相对文件名作为第三个参数。

    $exporter->parse(new \pandaac\Exporter\Parsers\NPC, [], 'The Oracle.xml');
  • 套装

    $exporter->parse(new \pandaac\Exporter\Parsers\Outfits);
  • 任务

    $exporter->parse(new \pandaac\Exporter\Parsers\Quests);
  • 突袭

    您必须指定相对文件名作为第三个参数。

    $exporter->parse(new \pandaac\Exporter\Parsers\Raid, [], 'testraid.xml');
  • 突袭

    您还可以通过将recursive属性设置为true,从每个单独的突袭文件中加载数据。

    $exporter->parse(new \pandaac\Exporter\Parsers\Raids, [ 'recursive' => true ]);
  • 法术

    $exporter->parse(new \pandaac\Exporter\Parsers\Spells);
  • 阶段

    $exporter->parse(new \pandaac\Exporter\Parsers\Stages);
  • 交谈动作

    $exporter->parse(new \pandaac\Exporter\Parsers\TalkActions);
  • 职业

    $exporter->parse(new \pandaac\Exporter\Parsers\Vocations);
  • 武器

    $exporter->parse(new \pandaac\Exporter\Parsers\Weapons);
  • XML源
    如果您有一个包含XML的字符串,您还可以使用以下设置进行解析。

    use pandaac\Exporter\Parsers\XMLSource;
    use pandaac\Exporter\Sources\StringContent;
    
    $exporter->parse(new XMLSource(
        new StringContent('<online><player id="1" /><player id="2" /></online>')
    ));

OTBM解析器

OTBM引擎尚未开发,因此以下解析器目前已被视为已弃用。

  • 城镇

    $exporter->parse(new \pandaac\Exporter\Parsers\Towns);

贡献

请参考PSR-2指南,并在提交拉取请求之前将您的提交合并成一个。

谢谢。