goaop/framework
:gem: Go! AOP PHP - modern aspect-oriented framework for the new level of software development
Patch release, which includes https://github.com/goaop/framework/commit/d268f6fcc22eacf47a6c97917ca41cc3db5941d0 to allow backward-compatibility with 3.x branch
📋 What's Changed
- Upgrade to GitHub-native Dependabot by @dependabot-preview[bot] in https://github.com/goaop/framework/pull/474
- old bug sync by @137-rick in https://github.com/goaop/framework/pull/473
- [FIX] Library generates non-nullable return type for nullable return … by @jakublabno in https://github.com/goaop/framework/pull/484
- Migrate to doctrine/annotations 2.x by @mdoelker in https://github.com/goaop/framework/pull/489
- fix: prevent generating "namespace ;" for classes without declared namespace by @daniel-sc in https://github.com/goaop/framework/pull/490
- [Step 1] Bump requirement to PHP 8.2 and parser-reflection 4.0.0-RC1 by @samsonasik in https://github.com/goaop/framework/pull/492
- Feature - refactor framework core to php82 by @lisachenko in https://github.com/goaop/framework/pull/493
- [Feature] Pointcut namespace refactoring by @lisachenko in https://github.com/goaop/framework/pull/500
- + 7 more
✨ New Contributors
- @dependabot-preview[bot] made their first contribution in https://github.com/goaop/framework/pull/474
- @137-rick made their first contribution in https://github.com/goaop/framework/pull/473
- @jakublabno made their first contribution in https://github.com/goaop/framework/pull/484
- @mdoelker made their first contribution in https://github.com/goaop/framework/pull/489
- @samsonasik made their first contribution in https://github.com/goaop/framework/pull/492
- @dependabot[bot] made their first contribution in https://github.com/goaop/framework/pull/495
- Full Changelog: https://github.com/goaop/framework/compare/3.0.0...3.1.0
📋 Changes
- [BC BREAK] Switched to the PHP7.4 and upper, strict types, property and 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 `laminas/laminas-code` package to generate code for proxies
- [Feature] Add private properties interception #412
- + 2 more
Small patch version to allow installation of Symfony5 components #447
📋 Changes
- [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
This is a patch release with #425 bug fix.
📋 Changes
- Fixed call to undefined method with new PhpParser for 2.x branch #419
- Finder glob pattern #421
- Fix memory leaks and late object disposal #423
📋 Changes
- Fix error with "self" references in top level namespace #397
- Use Symfony Finder component for faster enumeration #402
- [BC Break] Update `goaop/parser-reflection` dependency to 2.0+ #403
📋 Changes
- [x] AdviceMatcher should reject abstract method as fix for #335, #337
- [x] Fix wrong checking of member modifiers for static members, resolves #293
- [x] Feature/detecting inconsistent weaving #346
- [x] Fix incorrect optimization logic for transformers, resolves #355
- [x] Introduce an option to configure cached reader for annotations, resolves #136, #358 and #245
- [x] Replace unsupported HHVM with supported PHP7.2 in Travis matrix
- [x] Inline definition of advices into classes and beautify formatting
- [x] Improve PhpUnit integration and prepare reusable constraints, resolves #340 #350
- + 7 more
📋 Changes
- [x] Implement workaround for Doctrine entities with metadata listener #327
- [x] CLI commands can be owerwritten for transparent integration with frameworks #330
📋 Changes
- [x] Fix `fnmatch` issue on Windows machine #326
- [x] Fix incorrect usage of CachedAspectLoader when cache is not configured #319
📋 Changes
- [x] Add support for the nullable types in PHP7.1, see #309, #314
- [x] Add support for the `void` return types for PHP7.1, see #307
- [x] Update the requirement for the `goaop/parser-reflection` library to use the latest version with PHP7.1 support.
- [x] Add a fix for non-absolute paths returned from the composer since PHP5.6 #295
- [x] Add an ability to update invocation arguments via `Invocation->setArguments()` method #297
- [x] Enable wildcard paths for the Enumerator, e.g `/*Bundle/*/Tests`, see #300
- [x] Allow to pass an exception as a second argument to the invocation for the `AfterThrowing` type of adivce, see #302
📋 Changes
- [x] Add an ability to update invocation arguments in advices, see #297
- [x] Restrict the `1.x` branch only to the PHP5.5, because `andrewsville/php-token-reflection` can work only with PHP=<5.5 and is not maintained anymore, see #305
- [x] Fix broken logic of pattern matching for `includePath` and `excludePath` options, see #300, #311
📋 Changes
- [x] Added a support for the PHP5.6 and 7.0 features: variadic arguments for methods, scalar type hints, return type hints
- [x] Migrated from the `Andrewswille/Token-Reflection` to the `goaop/parser-reflection` library for PHP5.6 and PHP7.0 support
- [x] Command-line tools for debugging aspects and advisors
- [x] Dropped support for PHP<5.6, cleaned all old code
- [x] [BC BREAK] Removed ability to rebind closures because of PHP restrictions, see #247
- [x] [BC BREAK] Removed getDefaultFeatures() method from the AspectKernel, no need in it since PHP5.6
- [x] Fixed cache files permission, now all cache files will be created with given cache mode, resolves #275
- [x] Added context-sensitive matching that allows new checks #274 and resolves #272 by providing a new pointcut expression `!matchInherited()` to exclude all inherited methods from matching
- + 7 more
📋 Changes
- [x] Fixed cache files permission, now all cache files will be created with given cache mode, resolves #275
- [x] Added context-sensitive matching that allows new checks #274 and resolves #272 by providing a new pointcut expression `!matchInherited()` to exclude all inherited methods from matching
- [x] Fixed logic for complex pointcut expressions, combined with OR logic, resolves #217
- [x] Fixed broken property interception generated source code for the constructor, resolves #271
- [x] Property interceptor now use trait for common logic as well returns values by reference, see #54 and #232
- Advice that controls an access to the properties
- @param FieldAccess $fieldAccess Joinpoint
- @Around("access(public|protected Demo\Example\PropertyDemo->*)")
- + 1 more
Patch release fox fixing the issue #259, which dramatically reduce the performance of the framework.
📋 Changes
- 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
- + 4 more
Minor patch to fix a bug with overwriting of original files
📋 Changes
- 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
📋 Changes
- 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 from MethodInvocation instance
- 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
- + 3 more
1. Add minor changes for supporting CLI-mode 2. Optimization: sort list of advices only during the cache creation phase 3. Optimization: do not split a source into array of lines if there is only one class per file
1. Switched to doctrine/annotations package instead of doctrine/common 2. Removed the `Demo` namespace from the composer and use it only for testing. 3. Optimized injection of advices and caching of callables 4. Some fixes for supporting Symfony2 and SensioDistributionBundle
📋 Changes
- 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)
📋 Changes
- 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
- 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
- + 2 more
