goaop/framework
Go! AOP brings aspect-oriented programming to PHP without extensions or eval. Define aspects once to apply logging, caching, security and other cross-cutting concerns across your app automatically, keeping business code clean with static file weaving.
Full Changelog: https://github.com/goaop/framework/compare/3.0.0...3.1.0
Patch release, which includes https://github.com/goaop/framework/commit/d268f6fcc22eacf47a6c97917ca41cc3db5941d0 to allow backward-compatibility with 3.x branch
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:
laminas/laminas-code package to generate code for proxiesNotice: 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.
Small patch version to allow installation of Symfony5 components #447
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:
zendframework/zend-code package to generate code for proxiesThis is a patch release with #425 bug fix.
Patch release that contains several small fixes
This minor release introduces some fixes:
goaop/parser-reflection dependency to 2.0+ #403Please, be aware that #403 bumps the PHP minimum version for 2.x branch to be >=7.0.0. As minimum supported PHP version now is 7.2, I decided to drop 5.6 for 2.x branch too.
In emergency cases 2.3.1 patch can be released.
This version introduces latest minor release in 2.x branch. Only security fixes and bug patches will be applied to the 2.x since current release.
Fixes:
Improvements:
Features:
BC breaks on code level:
This small patch introduces following fixes, thanks to @TheCelavi:
Small patch version with fixes
fnmatch issue on Windows machine #326Version 2.1.0 enables support for PHP7.1. As well it provides some useful features for you applications:
void return types for PHP7.1, see #307goaop/parser-reflection library to use the latest version with PHP7.1 support.Invocation->setArguments() method #297/*Bundle/*/Tests, see #300AfterThrowing type of adivce, see #302Version 1.2.0 is a minor release with one new feature and several fixes:
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 #305includePath and excludePath options, see #300, #311Please, note, that the branch 1.x will not receive any new features and you should plan your time to upgrade to the 2.x versions.
Here it is! Shiny 2.0.0 version!
This version contains a lot of fixes and improvements:
Andrewswille/Token-Reflection to the goaop/parser-reflection library for PHP5.6 and PHP7.0 supportChanges from the 1.x branch:
!matchInherited() to exclude all inherited methods from matchingPay attention, that some internal parts are changed, so be careful when updated. Also property interceptors logic is changed now and to modify values in advices, you should use returning by reference methods like following:
/**
* Advice that controls an access to the properties
*
* [@param](https://github.com/param) FieldAccess $fieldAccess Joinpoint
*
* [@Around](https://github.com/Around)("access(public|protected Demo\Example\PropertyDemo->*)")
* [@return](https://github.com/return) mixed
*/
public function aroundFieldAccess(FieldAccess $fieldAccess)
{
$isRead = $fieldAccess->getAccessType() == FieldAccess::READ;
// proceed all internal advices
$fieldAccess->proceed();
if ($isRead) {
// if you want to change original property value, then return it by reference
$value = /* & */$fieldAccess->getValue();
} else {
// if you want to change value to set, then return it by reference
$value = /* & */$fieldAccess->getValueToSet();
}
echo $fieldAccess, ", value: ", json_encode($value), PHP_EOL;
}
This version contains several important fixes and improvements:
!matchInherited() to exclude all inherited methods from matchingPay attention, that some internal parts are changed, so be careful, when updated. Also property interceptors logic is changed now and to modify values in advices, you should use returning by reference methods like following:
/**
* Advice that controls an access to the properties
*
* [@param](https://github.com/param) FieldAccess $fieldAccess Joinpoint
*
* [@Around](https://github.com/Around)("access(public|protected Demo\Example\PropertyDemo->*)")
* [@return](https://github.com/return) mixed
*/
public function aroundFieldAccess(FieldAccess $fieldAccess)
{
$isRead = $fieldAccess->getAccessType() == FieldAccess::READ;
// proceed all internal advices
$fieldAccess->proceed();
if ($isRead) {
// if you want to change original property value, then return it by reference
$value = /* & */$fieldAccess->getValue();
} else {
// if you want to change value to set, then return it by reference
$value = /* & */$fieldAccess->getValueToSet();
}
echo $fieldAccess, ", value: ", json_encode($value), PHP_EOL;
}
Patch release fox fixing the issue #259, which dramatically reduce the performance of the framework.
1.0.0 (Feb 13, 2016)
PointcutBuilder classincludePath option nowFilterInjector is now disabled by default, this job for composer integration nowMinor patch to fix a bug with overwriting of original files
Version 0.6.0 is ready! This is probably the last 0.x release and now we are going to 1.0.0.
However, this version also includes some improvements and changes:
interceptFunctions=>true use 'features' => $defaultFeatures | Features::INTERCEPT_FUNCTIONS nowstatic::class for PHP>=5.5Version 0.5.0 of framework is ready!
Demo namespace from the composer and use it only for testing.This release contains a lot of new features. Here are the short changelog for them:
fopen(), file_get_contents(), etcDeclareParent introductionHow can I help you explore Laravel packages today?