5.3.16 (2020-07-06)

Overview of merged pull requests

TASK: Use argument unpacking instead of call_user_func_array

This is supported since PHP 5.6 and is actually faster than call_user_func_array at least since PHP 7. Just be sure to not use it in places where the method is static or a Closure. This also deprecates ObjectAccess::instantiateClass() (retrospectively). It will be removed with Flow 7.

  • Packages: Flow

BUGFIX: Make php binary setting check use realpath

The check if the current executing php binary path as set in PHP_BINARY matches the given setting in phpBinaryPathAndFilename was case-sensitive. This check is only done when the setting is specified and should guarantee that the path specified refers to the same binary as the one executing the current script. On Windows, the filesystem is case-insensitive by default though (Windows 10 has options to make it case-sensitive) and the chance that someone accidentially gets the casing of the path wrong on windows is (arguably) much more likely than someone having different versions of php installed on a case-sensitive filesystem in pathes /foo/PHP/php and /foo/php/php respectively. ~Even if that would be the case, if the two versions do not match the check at ensureWebSubrequestsUseCurrentlyRunningPhpVersion would still throw an error with an even more specific message.~

So this will prevent irritating errors on Windows in the form of ![image](https://user-images.githubusercontent.com/4259532/85157246-83217f00-b25b-11ea-8ebb-abc95b30e09a.png)

  • Packages: Flow

BUGFIX: Check if PdoBackend cache tables exist in setup

Running the setup for a PdoBackend multiple times should not lead to an error, similar to other Backends.

Resolves: #2039

What I did Allow PdoBackend::setup() to be called multiple times.

How I did it Check if cache tables exist in PdoBackend::setup() before creating them.

How to verify it See #2039

  • Packages: Cache

BUGFIX: Avoid trying to autowire constructor arguments for factory created objects

This bug was uncovered with the previous fix to not map arguments to the object when a factory is configured (see #1967). That way (singleton) objects which expected a (non-optional/nullable) constructor argument that could not be autowired (e.g. because it was a scalar) would lead to the exception “Could not autowire required constructor argument … for singleton class …”. This change fixes that, by completely skipping autowiring for objects configured with a factory. The factory has full responsibility to create and wire the constructor arguments correctly.

  • Packages: Flow

TASK: Improve wording of include/exclude concepts where possible

Those old wordings have no place and they are also objectively worse than the replacements.

  • Packages: Eel Flow

TASK: Adding a test case for breaking object configuration if argumen…

…ts of object constructed by factory cannot be autowired

  • Packages: Flow

Apply fixes from StyleCI

This pull request applies code style fixes from an analysis carried out by [StyleCI](https://github.styleci.io).

For more information, click [here](https://github.styleci.io/analyses/YjKPZd).

  • Packages: Eel Flow