php-soap/wsdl-reader
php-soap/wsdl-reader is a PHP library for parsing WSDL documents into a structured object model, making it easy to inspect services, bindings, ports, operations, and types. Lightweight and framework-agnostic, it helps PHP applications understand SOAP service definitions.
Positioning. php-soap/wsdl-reader is an enabling component, not a product feature. It converts a WSDL document into a navigable PHP object model (services, ports, bindings, port types, operations, messages, schema types) so that other code — SOAP clients, code generators, validators, internal tooling — can reason about a contract instead of manipulating XML by hand. A TPM should treat it as infrastructure: its value is measured by the integration risk it removes elsewhere, not by direct adoption.
Architecture fit. Framework-agnostic and deliberately narrow: no service provider, no config surface, no runtime hooks. In a Laravel codebase it typically arrives transitively through the php-soap driver/engine stack rather than being installed deliberately. That has a governance consequence: the team may be depending on it without having made a decision about it, so the first TPM action is to confirm whether it is already in the resolved dependency graph and which integrations rely on its WSDL interpretation.
Integration feasibility. Low effort. There is no application code to write, no migration, and no configuration. The real work is verification, not construction:
attribute ref declarations (PRs #66 and #67: ref-declared attributes reported as qualified; refs into a no-namespace schema reported as unqualified).symfony/var-dumper to ^6.1 || ^7.0 || ^8.0 — a constraint relaxation that unblocks, but does not force, a Symfony 8 upgrade path.var-dumper is runtime or dev-only in the resolved graph; if dev-only, production risk is effectively nil.Technical risk. Small blast radius, expensive diagnostics. The package is 0.x, so minor versions carry no contractual stability guarantee even when signatures are unchanged. The namespace fixes alter how attributes serialize into outgoing SOAP envelopes; for contracts that use attribute ref, request bodies will differ from 0.33.0. That is a correction, but a partner system may have been coded against the previous, incorrect output. Secondary risks: cached parsed metadata or generated proxies retaining stale semantics, and the package's small community footprint (low star count, no listed dependents) implying a concentrated maintainer bus factor that a TPM should record as a standing dependency risk rather than a blocker.
Key questions.
attribute ref, including refs into no-namespace schemas? This decides whether 0.34.0 is a no-op or a behavioural change for us.0.x dependencies generally — do we have a review gate, or are we floating on caret constraints?Stack fit. Clean fit for any Laravel/PHP service that talks SOAP. Requirements are ordinary (ext-dom, ext-libxml, a supported PHP version) and already implied by any SOAP runtime. If the organisation has no SOAP surface, this package is irrelevant — do not adopt it speculatively.
Migration path. Treat as a routine dependency refresh with an unusual verification step:
~0.34.0) rather than floating on ^0.33; pre-1.0 packages should not be allowed to drift.Compatibility. API-compatible with 0.33.0. Behaviourally compatible except for the two namespace corrections, which only affect attribute ref contracts. The widened Symfony constraint is forward-looking only and imposes nothing on teams staying on Symfony 6 or 7.
Sequencing. Bundle with the normal dependency cadence, but deploy to a non-production environment stocked with real vendor WSDLs before production — synthetic fixtures will not exercise the attribute ref paths that changed. If a WSDL corpus diff is not obtainable, stage the rollout per integration rather than fleet-wide. Do not pair this bump with an unrelated SOAP engine major upgrade; the value of the change is that it can be reasoned about in isolation.
Maintenance. Near-zero run cost, moderate governance cost. The public surface is thin and the library does no I/O beyond parsing. The recurring obligation is watching 0.x minors for silent semantic changes; a scheduled dependency review plus a register note ("0.x — review each minor for namespace/serialization semantics") is sufficient.
Support. No commercial support. Reliance is on the upstream maintainer and community PR flow. Given the low star count and absence of listed dependents, the TPM should record this as single-maintainer exposure and decide the mitigation now rather than during an incident: either vendor the source, or accept it on the grounds that the package is small and forkable. Internal ownership should be a named engineer on the SOAP integration side, not a shared queue — triage requires WSDL literacy.
Scaling. Parsing is CPU-bound and belongs at bootstrap or cache-warm time, not on the request path. The cost is fixed per unique WSDL, so scale pressure is a caching question, not a library question. Ensure WSDL parse results are cached in production and that the cache is warmed as part of deploy.
Failure modes.
composer.lock in deploy pipelines.Ramp-up. Low technically, moderate domain-wise. Any engineer can call the API; understanding qualified versus unqualified attribute declarations and why they matter on the wire is the actual learning curve. Fund a short internal write-up so on-call staff can distinguish an application bug from a namespace-interpretation issue, and so the next upgrade is a checklist item rather than an investigation.
How can I help you explore Laravel packages today?