An open API service indexing awesome lists of open source software.

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

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.