PHPackages                             lacedorium/soap-yaml - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. lacedorium/soap-yaml

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

lacedorium/soap-yaml
====================

Create SOAP requests by YAML templates

v0.0.1(6y ago)03MITPHP

Since Jan 15Pushed 6y agoCompare

[ Source](https://github.com/nicoalonso/soapyaml)[ Packagist](https://packagist.org/packages/lacedorium/soap-yaml)[ Docs](https://github.com/nicoalonso/soapyaml)[ RSS](/packages/lacedorium-soap-yaml/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (1)Versions (2)Used By (0)

SOAP Yaml
=========

[](#soap-yaml)

Create the SOAP request by YAML templates.

Motivación
----------

[](#motivación)

Como desarrollador de **PHP** en ocasiones nos tocan consumir **SOAP** APIs. Ya existen potentes librerías que nos hacen la vida más fácil a la hora de implementar estas soluciones y no es el objetivo de este proyecto reinventar la rueda.

Pero en ocasiones, muchas más de las que reconocemos, el `WSDL` esta mal definido, tiene errores o depende de un descriptor que ya no existe. Y en ese momento nos sumergimos en la documentación de la librería para intentar solucionar la papeleta de nuestro lado, por que comunicar al equipo de desarrollo del WebService para que corrijan el `WSDL` sería incluso más lento. Los plazos de entregan son los que son y al final te decides por usar la versátil y todo poderosa librería `curl`. Que creo que todo desarrollador venera en silencio.

Este enfoque tiene un problema y es que debes generar de alguna forma el `XML` del `body` de la petición **SOAP**. Al final todos nos decantamos, por que es lo más rápido y sencillo, de hacer una simple concatenación de cadenas de caracteres con sus respectivos valores. A parte de ser poco elegante, cuanto mayor sea el cuerpo de la llamada SOAP más dificultad y por tanto mayor deuda técnica tendrá tu proyecto.

Existen varias aproximaciones que podríamos usar para corregir esto:

1. Usar una plantilla XML, parsearla, completarla con los valores y volver a generar el XML. No se a ti, pero a mi no me gusta nada, es poco elegante y la he descartado.
2. Usar un **motor de plantillas**, igual que antes usaríamos una plantilla en XML y se la pasaríamos al motor con los correspondientes valores a completar y de esa forma obtendríamos la petición. Por ejemplo en `Symfony` usaríamos `Twig`. Este enfoque es el que considero el más versátil, ya que nos permitiría usar toda la potencia del motor con sus flujos de control, librerías y plugins. Entiendo que los puritanos de la eficiencia, entre los que me encuentro, puedan disentir ya que sin duda es poco eficiente, y coincido con ellos en que desarrollar código eficiente evita que se produzcan cuellos de botella. Pero, como en todo, hay que tener una visión global, que en proyecto sea una solución inviable no significa que en otro sea una solución elegante.
3. Usar **Yaml** como plantilla. Esta es la aproximación que abordo con este proyecto. Una de las características más importantes de **Yaml** es que es más legible que otro formato, como puede ser `XML` y `JSON`, y también es muy fácil de redactar. ¿Cual es la idea que esta detrás de esta aproximación? Es sencillo, con unas simples reglas podemos expresar un `XML` como un `array asociativo` y este a su vez lo podemos almacenar como un documento en `Yaml`, y por tanto podemos hacer el proceso a la inversa.

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2307d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7ba7d5b95d3786754ac5f0905efb703e28b09a561d21274a554e0618f79be1c6?d=identicon)[nicoalonso](/maintainers/nicoalonso)

---

Top Contributors

[![nicoalonso](https://avatars.githubusercontent.com/u/32513992?v=4)](https://github.com/nicoalonso "nicoalonso (12 commits)")

---

Tags

phpsoapyaml

### Embed Badge

![Health badge](/badges/lacedorium-soap-yaml/health.svg)

```
[![Health](https://phpackages.com/badges/lacedorium-soap-yaml/health.svg)](https://phpackages.com/packages/lacedorium-soap-yaml)
```

###  Alternatives

[daux/daux.io

Documentation generator that uses a simple folder structure and Markdown files to create custom documentation on the fly

825191.0k1](/packages/daux-dauxio)[sspooky13/yaml-standards

Standards for yaml files

11518.3k3](/packages/sspooky13-yaml-standards)[prohalexey/the-choice

253.3k](/packages/prohalexey-the-choice)[opensoft/simple-serializer

Simple Serializer

1914.2k1](/packages/opensoft-simple-serializer)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
