Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Packagebase Laravel Package

wsdltophp/packagebase

Base library for PHP packages generated from WSDL files by wsdltophp/packagegenerator. It supplies shared runtime utilities, helpers, and common behavior so generated SOAP client code stays lean, consistent, and easier to maintain.

Deep Wiki
Context7

Technical Evaluation

What this package actually is

  • wsdltophp/packagebase is not an integration library — it is the runtime base-class layer that wsdltophp/packagegenerator emits code against. Its consumers are machine-generated SOAP client/struct classes, not hand-written application code.
  • Practical consequence for evaluation: the adoption decision is really "do we adopt WSDL-first SOAP code generation?" This package comes along as a transitive, near-immutable dependency. It has no service provider, config, facade, or Laravel coupling.

Architecture fit

  • Fits cleanly as an infrastructure-layer dependency: generated clients sit behind an application-owned gateway/adapter interface, so domain code never references AbstractSoapClientBase or AbstractStructBase types.
  • Poor fit for teams without SOAP/WSDL surface area. If the estate is REST/JSON or gRPC, opportunity is effectively zero (consistent with the low opportunity score of 2.4).
  • Good fit where the alternative is hand-rolled SoapClient subclasses with duplicated header/auth/timeout handling — the base classes standardize that, and expose setSoapClient() for test doubles.

Integration feasibility

  • Mechanically trivial: composer require wsdltophp/packagebase plus the generator as a dev-only tool. Total setup effort is measured in hours; the real cost is the generation pipeline and per-service validation.
  • Hard requirements to confirm early: ext-soap (plus ext-dom/ext-libxml) present in local, CI, and production images; PHP version floor compatible with our runtime.
  • No framework lifecycle hooks means nothing to register or boot — low blast radius, but also no framework-level observability, retry, or config we can lean on. All resilience must be built in our adapter.

Technical risk

  • Version-contract drift is the dominant risk: generated code and base classes are a matched pair. Upgrading one without the other produces signature/fatal errors, and base-class majors have broken BC historically. Mitigation: pin both, upgrade atomically, never float either.
  • Abstraction lock-in: the base layer binds us to PHP's SoapClient, not PSR-18/PSR-7. Swapping transports later means regenerating and rewriting the adapter.
  • Abandonment/maintenance risk: 23 stars, single-maintainer ecosystem, low opportunity signal. Stability is high because the surface is small and feature-frozen — but there is no vendor, no SLA, and no guarantee of a patch if PHP or a downstream runtime change breaks it. Realistically we would vendor or fork it.
  • Functional ceilings: WS-Security, MTOM/attachments, and non-trivial header negotiation require custom SoapClient subclasses and hand-maintained header logic outside the generated code. Confirm these are not in scope before committing.
  • Schema-drift silence: generated structs hydrate only known properties; upstream additions are dropped without error. This is a correctness risk, not an availability risk — it fails quietly.

Key questions for the owning team

  1. Which concrete WSDL endpoints are in scope, and what are their published deprecation/retirement dates?
  2. Do we commit generated code to VCS, or generate at build time? (Determines diff noise, reviewability, and CI design.)
  3. Which generator version pairs with which packagebase major, and who owns that upgrade decision?
  4. Is ext-soap enabled in the production image and every CI job — and does the base image policy allow it long-term?
  5. Do any target services require WS-Security, SOAP headers, attachments, or async/fire-and-forget patterns beyond the default __soapCall flow?
  6. What is the test strategy — contract tests against a recorded WSDL, or live sandbox? Are we injecting mock SoapClient instances via setSoapClient()?
  7. Is there an accepted exit path if the package is abandoned (fork, vendor, or hand-write the small base layer)?

Integration Approach

Stack fit

  • Laravel 10/11/12 on PHP 8.1–8.3: no constraints imposed by the package beyond ext-soap and the PHP floor. It will not block framework upgrades — a genuine longevity positive in an otherwise legacy-adjacent choice.
  • Placement: app/Infrastructure/Soap/{Service}/ for generated classes (namespaced and excluded from static analysis/coverage as generated), with a thin hand-written {Service}Gateway implementing a domain-owned interface. Domain and HTTP layers see only the interface.
  • Cross-cutting concerns — auth headers, correlation IDs, timeouts, logging, fault-to-domain-exception mapping — belong in a shared base gateway or a custom SoapClient subclass, not in generated files (regeneration would erase them).

Migration path

  • If hand-rolled SoapClient/cURL code exists: migrate one operation at a time behind the new gateway interface (strangler pattern), with the old path live until parity is proven on the same inputs.
  • If legacy generated code from an older generator exists: do not upgrade in place. Generate fresh into a new namespace, run both, diff responses, then cut over.
  • If greenfield: generate, wrap, contract-test, ship — no migration sequencing needed.

Compatibility

  • Lock generator + packagebase + committed generated output as a single versioned unit; record the generator version in the generated directory README or a marker file.
  • Enforce composer.lock in CI; forbid composer update for these two without an explicit regeneration diff.
  • Run a PHP/ext-soap compatibility matrix in CI across the supported PHP versions, since the package will not gate us — we must gate ourselves.
  • Expect cosmetic regeneration diffs (formatting, ordering) across generator versions; review them as noise-suppressed but not auto-merged.

Sequencing

  1. Spike (1–2 days): generate a client for one non-critical WSDL; validate transport, auth headers, timeouts, fault mapping, and mock-based unit tests.
  2. Harness (3–5 days): CI job for regeneration + drift check, adapter interface, shared header/timeout/logging layer, contract test suite against a captured WSDL.
  3. Pilot (1 service): ship one integration end to end in production with dashboards on call latency, fault rate, and payload size.
  4. Rollout: migrate remaining services in descending order of business criticality, one at a time.
  5. Hardening: vendor/fork contingency, documented regeneration runbook, ownership assignment.

Operational Impact

Maintenance

  • Low churn, small surface, MIT license — cheap to keep. Realistically a once-per-quarter dependency review, plus an upgrade event whenever PHP or the generator moves.
  • The maintenance cost is concentrated in the pipeline (regeneration, diff review, drift detection) rather than the library itself.
  • Assign explicit internal ownership: this package has no vendor, so "the maintainer will fix it" is not a plan. Budget for the possibility of a fork; the base layer is small enough that forking is credible, which is the main reason this risk is tolerable.

Support

  • Community-only, no SLA, no commercial backing, sparse documentation. Knowledge will live in the generated output and the team's runbook, not in upstream docs.
  • Onboarding docs must cover: which generator version produced which directory, how to regenerate, how to inject a mock client, and where cross-cutting SOAP behavior lives.

Scaling

  • Runtime scaling is not a property of this package; it is a property of synchronous SOAP over HTTP. Expect blocking PHP-FPM workers for the duration of each call — size the pool against p95 downstream latency, and push batch/bulk operations onto queue workers.
  • No connection pooling or streaming; large payloads hydrate fully into struct objects, so memory scales with response size. Set explicit connection_timeout/timeout values on every client.
  • Downstream rate limits and concurrency caps, not our infrastructure, will be the binding constraint. Cache WSDLs (wsdl_cache) or ship local WSDL copies to avoid a runtime dependency on the provider's schema host.

Failure modes to instrument

  • WSDL unreachable/parsing failure at client construction (avoid by using local cached WSDL).
  • SOAP Faults surfaced as base-class exceptions — map to typed domain errors; alert on fault-code distribution, not just error count.
  • Transport timeouts and TLS/certificate expiry — silent killers in SOAP integrations; add cert-expiry monitoring.
  • ext-soap missing from a rebuilt base image — fails at class load, so add a startup smoke check.
  • Generator/packagebase version skew after a partial upgrade — prevent via atomic, pinned upgrades.
  • Silent field drops after an upstream schema change — detect with contract tests and response-shape assertions, not exception monitoring.

Ramp-up

  • A mid-level PHP developer with prior SoapClient exposure: roughly half a day to understand the base classes and mocking pattern, 1–2 days to be productive on a wrapped client.
  • Add ~1 week for someone to own the generation pipeline, CI drift check, and regeneration runbook.
  • The ramp-up tax is SOAP-domain literacy (WSDL/XSD, faults, headers), not this package. If the team lacks that, budget accordingly — it is the larger hidden cost in this evaluation.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route