Dotkernel API has come a long way since we published a list of its architecture and components a while ago. We implemented new features, while some components were replaced, and others were enhanced. Our ultimate goal is to stay relevant in the PHP ecosystem by implementing best practices recommended by the PHP community.

New Features

  • Content Negotiation makes it possible for diverse systems to work seamlessly together. It defines the communication parameters between client and server to make sure both sides agree on how the data exchange takes place.
  • The implemented of mezzio-problem-details is used to return standardized error codes. The generated problem details responses are based on either PHP primitives or exceptions/throwables. This ultimately helps error reporting system-wide.
  • The common logic is now moved to the Core module. This also allows an easier sharing of the functionality within Core with other Dotkernel applications. To share the Code module, you need to save it as a separate Git repository which can then be added as a submodule to any Dotkernel application.
  • Replaced Twig with custom templating solution to avoid using mezzio-twigrenderer. This ultimately offers more reliable template handling as the small cost of some features that are normally not used in APIs.
  • Handle delegators and injected InputFilters were refactored to reduce the number of dependencies in handlers.

Some smaller changes are listed below:

  • Added OpenAPI documentation for all endpoints.
  • Added .gitattributes to set some git properties based on path and filename.
  • Implemented enums in the database, where relevant, mostly as a proof of concept.

Coming Soon

Currently we support:

  • Service Manager version 3 – restricted because of constraints from some dependencies.
  • PHP 8.3.

This setup is soon going to change. The very next version in the Roadmap for version 6.1 will implement:

  • Service Manager 4.
  • Support for PHP 8.4 and 8.5.

Composer updates

As with all regular updates, all packages were updated to their most recent versions that still allow for an installable set of dependencies.

One of the packages that stands out is ramsey/uuid. UUID version 7 is already being used for ramsey/uuid version 4 and thus will be available with no additional code changes for the release of ramsey/uuid version 5.

Tweaked configuration and testing

Alongside some smaller changes related to cache configuration for doctrine and route grouping, the test suite has been revised. Psalm has been replaced with PHPStan. This decision was made to remain in line with developers from popular projects like Doctrine and Composer who have also made the switch recently. A separate upgrade was dedicated to increasing the rule level to 8 which enables stricter static analysis and reveales more potential errors.


Looking for PHP, Laminas or Mezzio Support?

As part of the Laminas Commercial Vendor Program, Apidemia offers expert technical support and services for:

  • Migration from Laminas MVC to Mezzio or Dotkernel Headless Platform.
  • Migration from legacy Laminas API Tools (formerly Apigility) to Dotkernel API
  • Mezzio and Laminas Consulting and Technical Audit
  • Modernising Legacy Applications
  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>