jeidison/paxb
Composer 安装命令:
composer require jeidison/paxb
包简介
PHP XML Binding
关键字:
README 文档
README
Intrudução
O PAXB fornece uma maneira rápida e conveniente de gerar XML a partir de objetos PHP e ler XML em objetos. Ele suporta uma estrutura de ligação que mapeia elementos e atributos XML para propriedades PHP usando atributos no PHP 8.
Requisitos
- PHP 8.0+
- Extensão dom
Instalação
composer require jeidison/paxb
Atributos suportados
- #[XmlAttribute]
- #[XmlElement]
- #[XmlRootElement]
- #[XmlTransient]
- #[XmlValue]
- #[XmlType]
- #[XmlPhpTypeAdapter]
Adaptadores
Ao lidar com tipos que precisam de modificações nos valores antes de gerar o XML, podemos escrever um adaptador para indicar ao PAXB como gerenciar o valor de um tipo específico.
Exemplo de adaptador
<?php ... class DateBrAdapter implements XmlAdapter { public function marshal(mixed $object): mixed { return $object->format('d/m/Y'); } public function unmarshal(mixed $object): mixed { return DateTime::createFromFormat('d/m/Y', $object) ->setTime(null, null, null); } }
Exemplo de uso dos atributos
<?php ... #[XmlType(propOrder: ["number", "street", "fullAddress"])] class Address { #[XmlTransient] private string $fullAddress; #[XmlElement("street")] private string $address; #[XmlElement] private string $number; . . . class Author { #[XmlElement] private string $name; #[XmlElement] private ?string $birthday = null; #[XmlElement] private ?string $email = null; private ?Address $address = null; . . . #[XmlRootElement("livros")] class Book { #[XmlAttribute("identificador")] private int $id; #[XmlElement("nome")] private String $name; #[XmlPhpTypeAdapter(DateBrAdapter::class)] private DateTime $data; /**@var array<Author> */ #[XmlElement("authors")] private array $authors; ...
Gerando XML
<?php ... $address = new Address(); $address->setAddress("Rua 10"); $address->setNumber("123"); $address->setFullAddress("123"); $author = new Author(); $author->setName("Jeidison Farias"); $author->setBirthday(""); $author->setEmail(""); $author->setAddress($address); $book = new Book(); $book->setId(1); $book->setName("PHP XML Binding"); $book->setAuthors([$author]); $book->setData(new DateTime()); $book->setAddress($address) $paxb = PAXB::createMarshaller(); $xml = $paxb->marshal($book); echo $xml; ...
Exemplo de XML gerado
<?xml version="1.0" encoding="UTF-8"?> <livros identificador="1"> <nome>PHP XML Binding</nome> <date>10/09/2021</date> <authors> <name>Jeidison Farias</name> <address> <number>123</number> <street>Rua 10</street> </address> </authors> </livros>
Transformando XML em objetos PHP
<?php ... $xml = 'O seu XML'; $unmarshaller = PAXB::createUnmarshal(Book::class); $book = $unmarshaller->unmarshal($xml);
Transformando XSD em classes PHP [WIP]
<?php ... $parameter = new Xsd2PhpParameter; $parameter->pathRootXsd = ''; $parameter->withSetters = true; $parameter->withGetters = true; $parameter->namespace = ''; $parameter->pathStoreClasses = ''; Xsd2Php::instance()->convert($parameter);
Esse projeto é inspirado no JAXB da linguagem Java.
Autor
License
The MIT License (MIT). Please see License File for more information.
jeidison/paxb 适用场景与选型建议
jeidison/paxb 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.8k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 09 月 13 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「xml」 「XML Binding」 「PAXB」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 jeidison/paxb 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 jeidison/paxb 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 jeidison/paxb 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
PHP library which makes Poster API using smooth as glass
Creates Excel export by defining data bindings
A simple PDO query interface with support for result set and row level caching
Load DOM document safety
Added a method to Laravel response for handling xml response and also converting Eloquent return to XML.
Use auto generated UUID slugs to identify and retrieve your Eloquent models.
统计信息
- 总下载量: 1.8k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-09-13