Skip to content

V4

Compare
Choose a tag to compare
@gsteel gsteel released this 12 Jun 08:52
· 58 commits to master since this release
7d832be

Initial release of this fork. There's a lot of breaking changes compared to the 3.x series and due to these significant changes there might be some awkward stuff to come in the future so keep an eye on the changelog…

Initial release highlights include:

  • \Psr\Cache is now used for caching
  • Min version of PHP is now >= 7.1
  • strict_types throughout with scalar type hints and return types
  • Much improved test coverage ~ 95%
  • Introduced document hydration so you can implement concrete content models in code
  • Re-Introduced typed content fragments such as RichText, Date, Embed, GeoPoint etc.
  • Transparent support for both V1 and V2 Apis
  • Default document implementation can retrieve it's own relationships such as alternative translations
  • Guaranteed to throw predictable exceptions all implementing the same interface in the same namespace

Future changes

The LinkResolver as a concept is now pretty much a hard dependency for \Prismic\Api but relies on setter injection. The good thing is that this enables other elements, such as RichText to be serialised to HTML without needing to keep a link resolver handy all the time, i.e. $textFragment->asHtml() instead of $textFragment->asHtml($linkResolver) which can be annoying in views, but the bad thing is that it's a hidden dependency. At some point this needs to be made more friendly…

The same could be said of the Hydrator - The defaults are perfectly acceptable and they are straight-forward to override but it's still a hidden dependency.

In future, I'm considering providing ready to use factories and configuration suitable for Psr\Container - it's good to practice dependency injection and everyone's doing it right?

\Prismic\Api Notable Gotchas

  • Methods getByID, getByIDs, getByUID have been camel-cased to getById, getByIds and getByUid
  • Method previewSession signature has changed. A Link resolver is no longer required: previewSession( string $token, string $defaultUrl) : string
  • Named constructor get() has changed to `Api::get( string $action, string $accessToken, Client $httpClient, \Psr\Cache\CacheItemPoolInterface $cache)