Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 31 million developers.Sign up
Porter v4 fixes all known design flaws (#31, #43) and critically re-evaluates every part of Porter's design. All base classes have been discarded (
AbstractResource), moving their code within Porter, relying solely on interfaces instead. This frees up the inheritance chain for applications to use as they wish, making it much easier to integrate Porter into existing projects.
The new design is much simpler, removing the redundant
fetch() method from
Provider and removing the redundant and confusing
EncapsulatedOptions parameters from all
fetch() methods. There is no longer any need to figure out how to merge different sets of options coming from different parts of the application because there is only one source of truth for connector options now, and they live within the connector itself, because it has a 1:1 relationship with its options.
Porter v4 is super slim; we no longer bundle any unnecessary dependencies such as connectors you don't need.
connectors/http has also dropped URL building support and all the associated dependencies because it is not the job of the connector to build URLs; do this in providers if needed, by whatever mechanism best suits its needs.
In development, on and off, for a little over a year, I sincerely hope you find this new version of Porter useful and easier to use than ever before.
- Changed Porter to no longer act as a repository of providers directly. Porter now requires a PSR-11
ContainerInterfacewhich must contain the providers. (#38)
- Porter is no longer bundled with any connectors.
connectors/soapmust be required manually if needed. (#39)
ConnectionContextas its first parameter. Context includes a
retry()method to provide preconfigured, immutable durability features to the connector. (#42)
Connectorimplementations no longer have to extend
CachingConnectorto provide caching facilities: all connectors can be decorated with
CachingConnectorwith no prior knowledge of the existence of such facility. This completely removes the burden on implementations to be aware of caching concerns. (#44)
- Changed fetch exception handler from
FetchExceptionHandlerto fix #43. (#50)
arrays. Previously, the documentation claimed collections were iterators of arrays but the software did not enforce this; now it does. (#52)
Migrating to 3.0.0 only requires effort for users of filters, mappings or custom durability settings.
Filters and mappings were removed from
ImportSpecification and reimplemented as transformers. Filters are reimplemented by
FilterTransformer whilst mapping integration was moved to a separate project, MappingTransformer.
Durability settings were moved from
Porter to the
ImportSpecification, allowing settings to be customized per-import instead of using the same setting for all imports.
- Refactored filters into
- Removed mappings from
- Moved durability methods from
- Added maximum fetch attempts option to
- Added custom fetch exception handler to
- Changed Mapper from required dependency to suggested dependency.
Migrating to 2.0.0 should be straight forward for most users since only two undocumented methods were removed from