m18 / profitbase
M18 profitbase 导出解析器
1.1.6
2021-03-09 10:20 UTC
Requires (Dev)
- phpunit/phpunit: 7.*
README
该工具将 Profitbase 的 XML 导出转换为对象,以便进一步处理。
安装
该工具的最新版本可通过 Composer 安装
composer require m18/profitbase
生成对象
处理数据流
要创建对象,需要扩展抽象类 M18\Profitbase\Handlers\XML
<?php namespace M18\Tools\Data\Profitbase; use M18\Profitbase\Handlers\XML; use M18\Profitbase\Models\Result\Data as ResultData; final class Handler extends XML { public function getData($resultModel = null, bool $get_values = true): ResultData { $resultModel = parent::getData($resultModel, $get_values); return $resultModel; } }
如果需要,可以在该类中添加对象的其他处理。要从一个或多个数据流中创建对象,需要在 Handler::getData()
方法中传递 $resultModel
对象。
链接
Profitbase XML 数据流的链接格式如下: https://pbXXXX.profitbase.ru/export/profitbase_xml/{hash}
Handler::$URL = 'https://pbXXXX.profitbase.ru/export/profitbase_xml/{hash}';
将多个数据流合并成一个对象
$handler = new Handler(); $url_list = $config->url_list; $profitbase = null; foreach ($url_list as $import_url) { try { Handler::$URL = $import_url; $profitbase = $handler->getData($profitbase); } catch (Exception $exception) { die($exception->getMessage()); } }
房间字段
对于房间对象,可以指定要获取的字段列表。例如,如果只需要部分数据流节点或使用了额外的元素。
负责房间字段的是类 \M18\Profitbase\Models\Utils\RoomFields。Room 对象将默认包含以下字段:
- is_new
- price
- area
- price-meter
- balcony-count
- loggia-count
- separated-bathroom-unit
- combined-bathroom-unit
- window-view
- studio
- rooms
- floor
- building-section
- description
要添加额外的字段集,请使用方法 \M18\Profitbase\Models\Utils\RoomFields::set(array $fieldset)
。其中,$fieldset
是一个数组,格式为 array({节点名称} => {字段类型})
要重置当前字段集,请使用方法 \M18\Profitbase\Models\Utils\RoomFields::clear()
示例
\M18\Profitbase\Models\Utils\RoomFields::set(array('kitchen-space' => 'float', 'living-space' => 'float')); \M18\Profitbase\Models\Utils\RoomFields::set(array('floor' => 'string'));
自定义字段
在 Profitbase 中存在所谓的自定义字段。这些字段的名称以编码方式表示,例如: pbcf_5b03c2b13a104
。为了提高字段的可读性,在处理对象之前可以设置自定义字段的别名。
use M18\Profitbase\Models\Utils\CustomFields; CustomFields::setAlias(array( 'pbcf_5b03c2b13a104' => 'bti_number', 'pbcf_5b03c2b141cc6' => 'bti_area', 'pbcf_5b03c2b146165' => 'area_wo_balcony', 'pbcf_5b03c2b149d47' => 'area_hallway', ));