While working with Zend Expressive, a PSR-7 middleware microframework, I wanted to apply some unit testing with a nice coverage to my middlewares. Middlewares are called by the __invoke method if you provide them as an object and not as a closure. The signature of the __invoke method looks like this:
When it comes to reading and returning the contents of a file in a PSR-7 middleware most developers seem use code that does the following: Read the file first, then write it to the response body.
When I came up with the idea to build a PSR-7 based flat-file CMS I thought that it must be fairly trivial to build a static page exporter by simply "faking" requests and storing the resulting responses. Turns out I was right and this an quick recap of what I did ;)
I was looking for a way to show how our libraries like Adrenaline, Pathfinder and Disco work in a "real world" application. I came up with the idea to build just another simple flat-file CMS. AddItEasy might be the first flat-file CMS based on a PSR-7 implementation which adds a nice touch: We can easily create a static file export from the content. That means that you do not need to upload addItEasy to your server, you can simply export the files and e.g. let GitHub host the static HTML pages.
Over the course of the last few months we worked hard to improve our Adroit middleware. The result is the recently released version v0.4.0 which turned Adroit into a "real" ADR / PSR-7 middleware. We extracted the routing component into a separate package called Pathfinder and splitted "monolithic" middleware into smaller components. In addition to that we introduced the concept of several hooks to be able to add "custom logic" in between the execution of the different steps in the ADR workflow.
In our attempt to convert parts of our own internal company framework into a set of open-source components we did not find a routing package that was fully PSR-7 compatible and was able to also generate uris based on the routing definitions. Initially the routing component was part of our Adroit middleware, a middleware focused on PSR-7 as well as the ADR pattern. During our attempt to turn Adroit into a (micro) web framework called Adrenaline we also extracted the routing component into a separate package.
In the course of pushing a few of our "internal" components to the public, it is about time to release the current version of Adroit which is our "smart" (pun intended) ADR/PSR-7 middleware implementation.
Prophiler is a PHP Profiler & Developer Toolbar which is part of the Phalcon project but can also be used as a stand-alone component, kind of like the Symfony Web Debug Toolbar or Z-Ray. What I like about Prophiler is that on the one hand it is super easy to install and on the other hand it offers a few nice adapters (e.g. PSR-3 logging or Doctrine integration) out-of-the-box.