Breaking changes
- PHP 8.4+ required (dropped 8.3)
WsseEntryinterface:__invoke()first parameter changed fromVeeWee\Xml\Dom\Documentto\DOMDocumentKeyIdentifierinterface:__invoke()first parameter changed fromVeeWee\Xml\Dom\Documentto\DOMDocumentSamlAssertionconstructor: takes\DOMDocumentinstead ofVeeWee\Xml\Dom\DocumentWssePreset: no longer implements veewee/xml'sConfiguratorinterface; useWssePreset::xpath(\DOMDocument)instead- Locators (
SecurityLocator,BinaryTokenLocator,SignatureLocator,EncryptedKeyLocator): accept\DOMDocument, return\DOMElement CustomKeyIdentifier/ReferencingKeyIdentifier: build nodes via native\DOMDocumentAPI (veewee builders removed)veewee/xmlremoved as a direct dependency (still available transitively viaphp-soap/xml)
Dependency upgrades
php-soap/psr18-transport:^1.8->^2.0php-soap/engine:^2.16->^2.20php-soap/xml:^1.9->^1.10php-http/client-common:^2.3->^2.7- PSL: replaced
php-standard-library/php-standard-librarywith standalone packages (^6.1)
Why the legacy DOM switch?
robrichards/wse-php operates on legacy \DOMDocument. In veewee/xml v3, the Document wrapper shared the same underlying \DOMDocument, so it worked transparently. In v4, Document wraps Dom\XMLDocument (PHP 8.4's new DOM), which has no shared state with legacy DOM. Every bridge requires an XML round-trip. Since all WSSE/WSA operations flow through robrichards, the wrapper added overhead with no benefit. The package now works directly with legacy \DOMDocument.
Upgrading
- Require PHP 8.4+
- Custom
WsseEntryimplementations: changeDocument $envelopeto\DOMDocument $envelope - Custom
KeyIdentifierimplementations: changeDocument $envelopeto\DOMDocument $envelope SamlAssertion: pass a\DOMDocumentinstead ofVeeWee\Xml\Dom\Document- If you used
WssePresetas a veeweeConfigurator: useWssePreset::xpath($doc)instead - If you read element text via
->nodeValue: use->textContent(new DOM spec)
Full Changelog: 2.9.0...3.0.0