alexsabur / yandex-realty-feed-generator
YRl feed 生成器
1.3.1
2021-03-19 08:12 UTC
Requires
- php: >=7.3
- ext-xmlwriter: *
- myclabs/php-enum: ^1.7
Requires (Dev)
- phpunit/phpunit: ^8.2
Replaces
- svv-team/yandex-realty-feed-generator: *
- windstep/yandex-realty-feed-generator: *
README
YRLGenerator 是一个简单的 PHP 库,它提供了一种干净的方式来创建用于与雅虎房地产服务工作的文件。它基于 YRL 语法,并且是完全有效的。
原始文档
您可以在 雅虎房地产数据源文档网站 上找到原始文档。
安装
要安装,只需在您的终端中输入以下命令
composer require alexsabur/yandex-realty-feed-generator
并确保您的系统已安装并启用了 PHP 版本 >= 7.3 和 ext-xmlwriter 扩展。
如何使用它
主要工作流程如下
use Windstep\YRLGenerator\YRLGenerator; use Windstep\YRLGenerator\Offer; $outputFilePath = __DIR__ . '/files/created_file.xml'; $temporaryFilePath = __DIR__ . '/files/tmp_file.xml'; $generator = new YRLGenerator($outputFilePath, $temporaryFilePath); // Note, that last one could be null $generator->beforeWrite(); $offers = [new Offer(1, $data), new Offer(2, $data)]; // Offer keys (first value) must be unique foreach ($offers as $offer) { $generator->bulkWrite($offer); } $generator->afterWrite();
如何添加数据
要处理数据,您必须知道存在三种类型的数据。
- 简单数据,呈现为 $key => $value,将转换为 <$key>$value</$key>
- 数组数据 $key => $childKey => $value,将转换为 <$key><$childKey>$value</$childKey></$key>
- 特殊数据,如图像数组,将通过特殊函数转换
您可以使用两种可用的选择之一来创建数据数组。以下两种方法产生的结果相同。
警告 如果您同时使用这两种变体,则 fluent setters 的值将覆盖数组中的数据。
使用 fluent setters 添加数据
如果您正在使用最新版本,您可能可以在 offer 对象上使用 fluent setters,所以您需要这样做
$offer = new Offer(123456); $offer->setType(Type::SELL()) ->setPropertyType(PropertyType::LIVING()) ->setCategory(Category::FLAT()) ->setLocation('Россия', null, null, 'Санкт-Петербург', null, '18-я линия В.О., 32') ->setMetro('Василеостровская') ->setPrice(4780000, Currency::RUB()) ->setSalesAgent(null, '+7812500400', SalesAgentCategory::DEVELOPER(), 'ЗАО "Застройщик"', 'http://www.developer.ru/', null, 'http://www.developer.ru/company/logo' ) ->setRooms(2) ->setNewFlat() ->setBathroomUnit(BathroomUnit::SEPARATED()) ->setBalcony(BalconyType::BALCONY()) ->setFloor(13) ->setFloorsTotal(15) ->setBuildingName('Северная фантазия') ->setYandexBuildingId(12345) ->setYandexHouseId(54321) ->setBuildingSection('Корпус 1') ->setBuildingState(BuildingState::UNFINISHED()) ->setReadyQuarter(3) ->setBuiltYear(2018) ->setBuildingPhase(3) ->setImage('http://www.developer.ru/images/plans/000001289.jpg') ->setDescription('Продается 2 к. кв., 13 этаж, 15 минут на машине до метро "Василеостровская". Дом комфорт-класса с продуманными планировочными решениями и широким выбором квартир. Внутренний двор «Северной фантазии» выполнен по эксклюзивному дизайн-проекту. В районе постройки нового ЖК развита инфраструктура: школы и детские сады, больница, аптеки магазины, кафе и спортивные центры. Доступны разные условия ипотеки, скидки и зачет жилья.') ->setArea(63.00, Unit::METER_SQUARE()) ->setLivingSpace(50.00, Unit::METER_SQUARE()) ->setKitchenSpace(10.00, Unit::METER_SQUARE()) ->setRoomSpace(15, Unit::METER_SQUARE()) ->setRoomSpace(35, Unit::METER_SQUARE()) ->setCreationDate('2015-04-02T19:00:06+03:00');
使用数组添加数据
因此,您必须创建一个如下所示的数组
$data = [ 'type' => 'продажа', 'property-type' => 'жилая', 'category' => 'квартира', 'creation-date' => '2015-04-02T19:00:06+03:00', 'location' => [ 'country' => 'Россия', 'locality-name' => 'Санкт-Петербург', 'address' => '18-я линия В.О., 32', 'metro' => [ 'name' => 'Василеостровская' ], ], 'price' => [ 'value' => 4780000, 'currency' => 'RUR', ], 'sales-agent' => [ 'phone' => '+7812500400', 'organization' => 'ЗАО "Застройщик"', 'url' => 'http://www.developer.ru/', 'category' => 'developer', 'photo' => 'http://www.developer.ru/company/logo', ], 'rooms' => 2, 'new-flat' => 1, 'bathroom-unit' => 'раздельный', 'balcony' => 'балкон', 'floor' => 13, 'floors-total' => 15, 'building-name' => 'Северная фантазия', 'yandex-building-id' => 12345, 'yandex-house-id' => 54321, 'building-section' => 'Корпус 1', 'building-state' => 'unfinished', 'ready-quarter' => 3, 'built-year' => 2018, 'building-phase' => 3, 'image' => [ 'http://www.developer.ru/images/plans/000001289.jpg', ], 'description' => 'Продается 2 к. кв., 13 этаж, 15 минут на машине до метро "Василеостровская". Дом комфорт-класса с продуманными планировочными решениями и широким выбором квартир. Внутренний двор «Северной фантазии» выполнен по эксклюзивному дизайн-проекту. В районе постройки нового ЖК развита инфраструктура: школы и детские сады, больница, аптеки, магазины, кафе и спортивные центры. Доступны разные условия ипотеки, скидки и зачет жилья.', // No html tags available here 'area' => [ 'value' => 63.00, 'unit' => 'кв. м', ], 'living-space' => [ 'value' => 50.00, 'unit' => 'кв. м', ], 'kitchen-space' => [ 'value' => 10.00, 'unit' => 'кв. м', ], 'room-space' => [ [ 'value' => 15, 'unit' => 'кв. м', ], [ 'value' => 35, 'unit' => 'кв. м', ] ], ]