Version 0.9.4 released

This release includes mostly API improvements and some new features. In the following I will cover each point of the changelog.

  • Sql table query methods return now an array instead of RecordInterface

    This was done because of performance reasons and now it is possible to use the CurveArray class to nest an response. The values inside the array are still converted to the fitting PHP type.

  • Added media type class and improved content negotiation

    A media type class was added which represents an media type i.e. application/xml or text/html; encoding=UTF-8. This improves and simplifies content negotiation.

  • Improved JWT implementation

    The JWT implementation was improved and is now easier to use.

  • Removed unused methods from Base class which now contains only the getVersion method

    Previously the Base class was used to provide methods for the current application i.e. getTag or getUUID. Actually the class has added only the hostname to make the result unique for this application. Since all this can be done by using the static methods of the specific class I have removed the complete "base" service and the methods.

  • Added rfc3986 compatible URI resolver class

    A new UriResolver class was added to resolve an relative path against an base uri. The class follows rfc3986 and uses the defined test cases.

  • Improved URI/URL/URN classes. Changed URL parameter getter/setter methods from getParam to getParameter etc.

    This change could probably break your application if you use the URL object inside the controller. The renaming was mostly done to have a more polished and consistent API. I will make these kind of changes only until we reach the 1.0 version. After that method changes will haven an deprecation phase and the removal happens only in an higher version.

  • Removed output method from xml writer and improved atom writer/entry

    These methods used the header and echo function to output the content of the writer. Since the methods are not testable and because we use an response object anyway I have removed these methods.

  • Added http cookie parser class

    A class which parses Cookie and Set-Cookie headers.

  • Added http stream util class to simplify working with streams

    The Util class has a simple method which converts an StreamInterface into an string without changing the position of the internal pointer which is useful for middlewares.

  • Added application stack interface

    This is the biggest internal design change but it has no effect on existing applications. So basically every controller returns now an array of middleware classes which can modify the request/response. I will create a seperate blog post with more detailed explanations.

  • Updated dbal to version 2.5

    Because of this update all HHVM tests pass now that means PSX can now be used in an HHVM evnironment.

  • Added various middleware filter implementations

    In regards to the application stack interface I have added various middleware implementations i.e.: CookieEncryption, Backstage, StaticCache, IpFirewall.

  • Improved tests

    With this release we reached >90% PHPUnit test line coverage.

  • Add CurveArray class to nest or flatten an array

    An class which can create an nested array from an flat one and vice versa. This is useful i.e. to change an database result.

  • Updated api doc controller template

    The template of the API doc controller was redesigned.