- Done: Elaborate the logic that prevents double inclusion.
- Fixed: The default redefinitions of call_user_func etc. still seem to be buggy.
- Fixed: Stream::url_stat suppresses errors, but not exceptions, in the delegated stat call.
- Fixed: DIRECTORY_SEPARATOR-related cache issues on Windows.
- Unsuccessful attempt at fixing $frame is undefined in CallRerouting::connectDefaultInternals.
- Added support for the redefinition of PHP's internal functions.
- Fixed: Warning: strpos(): Offset not contained in string.
- Fixed: Fatal error: Call to undefined function patchwork\callrerouting\deployqueue().
- Fixed: wildcard issues in HHVM due to the non-incremental ordering of get_declared_classes().
- No more warnings when Patchwork is not the first imported file. In case of unexpected behavior, use Patchwork\hasMissed($callable) : bool to check if your callable shows up too early to be redefinable.
- Removed the suppress-warnings key from patchwork.json, which is now redundant per previous point.
- Fixed: Error: Please import Patchwork from a point in your code where no user-defined function, class or trait is yet defined (BrainMonkey + PHPUnit).
- Fixed: Patchwork warning when included in PHPUnit bootstrap.
- Fixed: Correctly handle class instances.
- Fixed: restoreAll() crashes with wildcards, multiple methods.
- Autoloading is no longer used with Composer.
- Wildcards are now supported, e.g. replace('App\*', ...).
- Optional configuration files (patchwork.json) are now used to blacklist/whitelist files for preprocessing, suppress warnings and specify a cache path.
- The cache used by Patchwork can now be primed by running patchwork.phar from the command line.
- redefine, restore[All] and relay are now the main aliases of replace, undo[All] and callOriginal.
- Fixed: issues with flock().
- Fixed: faulty HHVM support.
- Fixed: incompatibility with WinCache.
- Wrapper-like behavior is now available to redefinitions using Patchwork\callOriginal().
- Preprocessor output is now optionally cached.
- Patchwork\replaceLater is now a @deprecated alias to Patchwork\replace, which now performs an existence check when a redefinition is being undone, or on shutdown.
- HHVM is now supported.
- No interference with opcode caches was detected.
- Fixed: Another standard output leak.
- Added a composer.json.
- Moved the PHAR from the main repository.
- Fixed: Patchwork\Preprocessor\Stream::rmdir passes a wrong parameter to rmdir.
- The stream wrapper now has stream_metadata and stream_truncate methods.
- Method redefinitions that are closures now have $this bound to the method's object.
- No errors are thrown anymore if an opcode cache is enabled.
- An error is now thrown when including Patchwork.php if PHP version is lower than 5.3.0.
- Fixed: Aliased methods imported from a trait misidentify themselves by their original name during call interception.
- Static and instance method redefinitions are now heritable. This means that redefining A::foo now also redefines B::foo, if B extends A and foo is not overridden in B.
- Fixed: Referring to a namespaced function with a leading backslash causes redefinition to silently fail.
- Fixed: Error: “Using $this when not in object context in \lib\Preprocessor.php(40) : eval()'d code on line 1”.
- Fixed: Error thrown from call interception code in namespaced anonymous functions.
- Renamed public API functions: patch → replace, unpatch → undo, escape → pass.
- Removed a specialized PHPUnit test case class.
- Added Patchwork\undoAll.
- Added Patchwork\replaceLater.
- Initial public release.