https://github.com/jeidison/paxb
PHP Architecture for XML Binding
https://github.com/jeidison/paxb
binding php php8 xml
Last synced: 4 months ago
JSON representation
PHP Architecture for XML Binding
- Host: GitHub
- URL: https://github.com/jeidison/paxb
- Owner: jeidison
- License: mit
- Created: 2021-09-10T11:52:00.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2023-08-29T14:34:31.000Z (almost 3 years ago)
- Last Synced: 2025-08-28T14:53:46.384Z (10 months ago)
- Topics: binding, php, php8, xml
- Language: PHP
- Homepage:
- Size: 111 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# PAXB (PHP Architecture for XML Binding)
## 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](https://www.php.net/manual/pt_BR/language.attributes.php).
## Requisitos
* PHP 8.0+
* Extensão dom
## Instalação
```bash
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
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
*/
#[XmlElement("authors")]
private array $authors;
...
```
## Gerando XML
```php
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
PHP XML Binding
10/09/2021
Jeidison Farias
123
Rua 10
```
## Transformando XML em objetos PHP
```php
unmarshal($xml);
```
## Transformando XSD em classes PHP [WIP]
```php
pathRootXsd = '';
$parameter->withSetters = true;
$parameter->withGetters = true;
$parameter->namespace = '';
$parameter->pathStoreClasses = '';
Xsd2Php::instance()->convert($parameter);
```
Esse projeto é inspirado no [JAXB](https://docs.oracle.com/javase/tutorial/jaxb/intro/index.html) da linguagem Java.
## Autor
- [Jeidison Farias](https://github.com/jeidison)
## License
The MIT License (MIT). Please see [License File](LICENSE) for more information.