goaop/framework
Framework for aspect-oriented programming in PHP.
3.1.1
4.1M downloads/mo
#4851 most downloaded on Packagist
goaop/framework
What this package is like to depend on
Last release 4 months ago
01 Apr 2026
Ships unpredictably
gaps range from 2 weeks to 4.1 years
Some releases are documented
notes for 17 of 32 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
38 releases · first in 2013
1 release in the last 12 months
see the full history below
Release timeline
38 releases · Jan 2013 to Apr 2026Releases
latest 38-
3.1.101 Apr 2026Release notes
Open source →Patch release, which includes d268f6f to allow backward-compatibility with 3.x branch
Release notes
Open source →d268f6f
Patch release, which includes d268f6f to allow backward-compatibility with 3.x branch
-
3.1.028 Jul 2025Release notes
Open source →What's Changed
- Upgrade to GitHub-native Dependabot by @dependabot-preview[bot] in #474
- old bug sync by @137-rick in #473
- [FIX] Library generates non-nullable return type for nullable return … by @jakublabno in #484
- Migrate to doctrine/annotations 2.x by @mdoelker in #489
- fix: prevent generating "namespace ;" for classes without declared namespace by @daniel-sc in #490
- [Step 1] Bump requirement to PHP 8.2 and parser-reflection 4.0.0-RC1 by @samsonasik in #492
- Feature - refactor framework core to php82 by @lisachenko in #493
- [Feature] Pointcut namespace refactoring by @lisachenko in #500
- Update symfony/finder requirement from ^5.1 to ^5.1 || ^7.0 by @dependabot[bot] in #495
- [BC Break] Internal container refactoring. by @lisachenko in #501
- Add PHP 8.0+ Union and Intersection type support on SelfValueVisitor by @samsonasik in #504
- [PHP8] Add broken tests with complex types by @lisachenko in #503
- Fix deprecated GitHub Actions versions in CI workflows by @Copilot in #509
- Update doctrine/orm requirement from ^2.5 to ^2.5 || ^3.0 by @dependabot[bot] in #494
- Fix deprecated nullable parameter declarations in PHP 8.2+ by @Copilot in #511
New Contributors
- @dependabot-preview[bot] made their first contribution in #474
- @137-rick made their first contribution in #473
- @jakublabno made their first contribution in #484
- @mdoelker made their first contribution in #489
- @samsonasik made their first contribution in #492
- @dependabot[bot] made their first contribution in #495
Full Changelog: 3.0.0...3.1.0
-
3.0.008 Jan 2021Release notes
Open source →Better late than never! This is next major release of Go! AOP that contains some improvements and uses new code features for better performance and stability.
Notable changes are:
- [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-codepackage to generate code for proxies - [Feature] Add private properties interception #412
- [Feature] Static code analysis with PhpStan was enabled
- [Feature] Migration from TravisCI to GitHub Actions
Notice: This version still doesn't support PHP8, see #466, mostly because of absence of PHP8-compatible parser reflection libraries. If you want to contribute this to one of existing projects, this will be very helpful.
Release notes
Open source →- [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-codepackage to generate code for proxies - [Feature] Add private properties interception #412
-
3.0.0-RC204 Feb 2020 pre-releaseNothing published for this version
-
3.0.0-RC104 Dec 2019 pre-releaseNothing published for this version
-
2.3.511 Jun 2021Nothing published for this version
-
2.3.406 Apr 2020 -
2.3.313 Aug 2019 -
2.3.201 Aug 2019 -
2.3.114 Feb 2019Nothing published for this version
-
2.3.005 Jan 2019Nothing published for this version
-
2.2.005 Jan 2018Nothing published for this version
-
2.1.212 Jul 2017Nothing published for this version
-
2.1.125 Apr 2017Nothing published for this version
-
2.1.004 Feb 2017Nothing published for this version
-
2.0.014 May 2016Release notes
Open source →- 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-Reflectionto thegoaop/parser-reflectionlibrary 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
-
2.0.0-alpha.107 Mar 2016 pre-releaseNothing published for this version
-
1.2.125 Apr 2017Nothing published for this version
-
1.2.010 Jan 2017Nothing published for this version
-
1.1.123 May 2016Nothing published for this version
-
1.1.003 May 2016Nothing published for this version
-
1.0.207 Mar 2016Nothing published for this version
-
1.0.128 Feb 2016Nothing published for this version
-
1.0.013 Feb 2016Release notes
Open source →- 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
PointcutBuilderclass - Do not create files in the cache, if no aspects were applied to them, respects
includePathoption now FilterInjectoris now disabled by default, this job for composer integration now- Automatic opcache invalidation for cache state file
-
1.0.0-alpha.219 Oct 2015 pre-releaseNothing published for this version
-
1.0.0-alpha.105 May 2015 pre-releaseNothing published for this version
-
0.6.105 Jul 2015 -
0.6.001 Feb 2015Release notes
Open source →- 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=>trueuse'features' => $defaultFeatures | Features::INTERCEPT_FUNCTIONSnow - Proxy can generate more effective invocation call with
static::classfor 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.008 Jul 2014Release notes
Open source →- 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.5.0-RC124 May 2014 pre-releaseNothing published for this version
-
0.4.303 Nov 2013Nothing published for this version
-
0.4.219 Sep 2013Nothing published for this version
-
0.4.127 Aug 2013Release notes
Open source →- 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.004 Aug 2013Release notes
Open source →- 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
DeclareParentintroduction - 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.027 May 2013Release notes
Open source →- 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.015 Mar 2013Release notes
Open source →- Intercepting methods in traits
- Pointcut parser/grammar
- Huge pointcuts refactoring, cleaning
- Lazy loading services, pointcuts
-
0.1.120 Jan 2013Release notes
Open source →- Introduction advice support
- Fix bug with composer autoloader prepending
- Fix doctrine/common dependency: >=2.0.0, <2.4.0
-
0.1.008 Jan 2013