Skip to content

Latest commit

 

History

History
100 lines (89 loc) · 5.61 KB

CHANGELOG.md

File metadata and controls

100 lines (89 loc) · 5.61 KB

Changelog

3.0.0 (December 4, 2019)

  • [BC BREAK] Switched to the PHP7.2 and upper, strict types, return type hints and new syntax
  • [BC BREAK] Removed the Joinpoint->getThis() method, as not all joinpoints belongs to classes (eg. FunctionInvocation)
  • [BC BREAK] Removed the Joinpoint->getStaticPart() method as it can return anything, better to use explicit methods
  • [Feature] Introduced the new ClassJoinpoint interface with getScope(), getThis() and isDynamic() methods
  • [Feature] Implemented parameter widening feature for generated code #380
  • [Feature] AnnotatedReflectionProperty provides simple access to property annotations #388 by @TheCelavi
  • [Feature] Switched to the zendframework/zend-code package to generate code for proxies
  • [Feature] Add private properties interception #412

2.0.0 (May 14, 2016)

  • Dropped support for PHP<5.6, clean all old code
  • [BC BREAK] Removed ability to rebind closures, because of PHP restrictions, see #247
  • [BC BREAK] Removed getDefaultFeatures() method from the AspectKernel, no need in it since PHP5.6
  • Migrated from the Andrewswille/Token-Reflection to the goaop/parser-reflection library for PHP5.6 and PHP7.0 support
  • Added support for PHP5.6 and 7.0 features: variadic methods, scalar type hints, return type hints
  • [Feature] Command-line tools for debugging aspects and advisors

1.0.0 (Feb 13, 2016)

  • Dropped support for PHP<5.5, clean all old code
  • Tagged public methods and interfaces with @api tag. No more changes for them in future.
  • Refactored core code to use general interceptors for everything instead of separate classes
  • New static initialization pointcut to intercept the moment of class loading
  • New feature to intercept object initializations, requires INTERCEPT_INITIALIZATIONS to be enabled
  • [BC BREAK] remove class() pointcut from the grammar #189
  • [BC BREAK] make within() and @within() match all joinpoints #189
  • [BC BREAK] drop @annotation syntax. Add @execution pointcut
  • Pointcuts can be build now directly from closures via PointcutBuilder class
  • Do not create files in the cache, if no aspects were applied to them, respects includePath option now
  • FilterInjector is now disabled by default, this job for composer integration now
  • Automatic opcache invalidation for cache state file

0.6.1 (Jul 5, 2015)

  • Minor patch to fix a bug with overwriting files

0.6.0 (Feb 1, 2015)

  • Interceptor for magic methods via "dynamic" pointcut. This feature also gives an access for dynamic pointcuts with different checks and conditions.
  • PSR-4 standard for the codebase, thanks to @cordoval
  • Added a support for splat (...) operator for more efficient advice invocation (requires PHP5.6)
  • New feature system. All tunings of kernel are configured with feature-set. This breaks old configuration option interceptFunctions=>true use 'features' => $defaultFeatures | Features::INTERCEPT_FUNCTIONS now
  • Proxy can generate more effective invocation call with static::class for PHP>=5.5
  • Bug-fixes with empty cache path and PSR4 code, thanks to @andy-shea
  • Make pointcut grammar class compatible with PHP7.0

0.5.0 (May 24, 2014)

  • Proxies are now stored in the separate files to allow more transparent debugging
  • Cache warmer command added
  • Extended pointcut syntax for or-ed methods: ClassName->method1|method2(*)
  • Access to the annotations for method from MethodInvocation
  • Support for read-only file systems (phar, GAE, etc)
  • Direct access to advisors (no more serialize/unserialize)
  • New @within pointcut to match classes by annotation class
  • Nice demo GUI
  • Deprecate the usage of submodules for framework
  • Inheritance support during class-loading and weaving
  • List of small fixes and imrovements

0.4.1 (Aug 27, 2013)

  • Better parsing of complex "include" expressions for Yii (by @zvirusz)
  • Support for dynamic arguments count for methods by checking for func_get_args() inside method body
  • Fixed a bug with autoloaders reodering (by @zvirusz)

0.4.0 (Aug 04, 2013)

  • Privileged advices for aspect: allows to access private and protected properties and methods of objects inside advice
  • Full integration with composer that allows for easy configuration and workflow with AOP
  • Fix some bugs with caching on Windows
  • "True" pointcut references that gives the ability to compose a complex pointcut from a simple pointcuts.
  • Pointcut now accept "$this" in references to point to the current aspect instance (Allows for abstract aspects and abstract pointcuts)
  • AspectContainer interface was extracted. This gives the way to integrate with another DIC. Look at Warlock framework.
  • Intercepting system functions such as fopen(), file_get_contents(), etc
  • Annotation property pointcut was added
  • Ability to declare multiple interfaces and/or traits with single DeclareParent introduction
  • DeclareError interceptor was added. This can be used for generating an runtime error for methods that should not be executed in such a way.

0.3.0 (May 27, 2013)

  • Support for dynamic pointcuts: pointcut that match a specific point in the code, if it is under the control flow (look at AspectJ cflow and cflowbelow)
  • Performance optimizations
  • Case-sensitive matching for pointcuts
  • Primitive pointcuts (&&, ||, !)
  • [BC break] Changes in the kernel configuration (look at the demo for appLoader and autoloadPaths)
  • Fix a logic bug for a composite pointcuts

0.2.0 (Mar 15, 2013)

  • Intercepting methods in traits
  • Pointcut parser/grammar
  • Huge pointcuts refactoring, cleaning
  • Lazy loading services, pointcuts

0.1.1 (Jan 20, 2013)

  • Introduction advice support
  • Fix bug with composer autoloader prepending
  • Fix doctrine/common dependency: >=2.0.0, <2.4.0

0.1.0 (Jan 08, 2013)

  • Initial release of library