Repository navigation
This release bumps the minimum PHP requirement to PHP 8.3, adds support for Guzzle 8, and introduces comprehensive coverage for Notifier v2.7.0 APIs alongside overall codebase modernisation.
Breaking Changes
- Minimum PHP Version: Modernised minimum required PHP version to 8.3 (PHP 8.1 is EOL; PHP 8.2 reaches EOL on 31 Dec 2026).
- Strict Gateway Typing:
Notifier::gateway()now type-hints the$gatewayparameter asstring.
New Features & Enhancements
Notifier v2.7.0 API Support
- Message Priority:
Message::send()now accepts an optionalpriorityparameter (accepts aMessagePriorityenum case or anint). - Bulk Messaging: Added
Message::sendMany()(aliased asbulk()) supporting thev2/message/sendendpoint to send messages across multiple phone numbers, contacts, and labels, or dispatch personalised messages. Returns response data containingmessage,summary, andfailed. - Contact Management: Introduced
Notifier::contacts()(Contact) supporting list, create, fetch, update, and delete operations. - Label Management: Introduced
Notifier::labels()(Label) supporting list, create, fetch, update/rename, and delete operations. - Pagination & Blank Responses: List endpoints now include pagination
linksandmeta. HTTP204 No Contentresponses are handled as successful empty payloads. - New Gateways: Added constants for Roam Tech (
Constants::GATEWAY_ROAM_TECH/'roam') and Razor SMS (Constants::GATEWAY_RAZOR_SMS/'razor-sms').
Dependency & Codebase Modernisation
- Guzzle 8 Support: Updated dependency constraint to allow
guzzlehttp/guzzle: ^7.10 || ^8.2. - Type Safety & Modern Syntax: Modernised the entire codebase with strict types (
declare(strict_types=1)), typed class constants,readonlypromoted properties, nativeResponseInterfacetyping, andmatchexpressions for error message handling.
Bug Fixes & Refinements
- Improved Error Messaging: Standardised error handling for
402,404, and422HTTP status codes to surface the server's error message directly, with validation errors populated into$data['errors']keyed by field. - Request Headers: Removed the default global
Content-Type: multipart/form-dataheader; each API request now explicitly manages its own payload content type.
Full Changelog: v0.2.0...v0.3.0