||Class to compile AOP code
||Transparent PHP AOP
PHP AOP implementation based on cache compilation
||By Guilherme Blanco
||- Fixed bug #00005: "Undefined property: Aspect::$xmlFile in class.Aspect.php"
- Fixed bug #00006: Undefined offset: 0 in class.AOP_CodeCompiler.php line 191"
- Added support to reference returned functions (ie: function & something(...))
. Re-structured compileCustomClassOrMethodToken in AOP_CodeCompiler
. Re-structured compileAutoClassOrMethodToken in AOP_CodeCompiler
- Added "around" Auto Pointcut support in XAD. Two possible behaviors:
. If the proceed(); call is found, the previous code is appended at "before"
AutoPointcut and the code after the proceed(); call is appended at "after" Auto
. If there's no proceed(); call, the whole source is retrieved and attached at
"before" and also attached at "after" AutoPointcuts
- Corrected inverted AOP::COMPACT, that if set as true, should compact (does the
opposite in RC2)
- New way to load external advice code. Now it depends of "asrequire" advice
attribute. The default value is false (old behavior). Possibilities:
. If "true", instead of the whole source being loaded, only a require call is
appended to the compiled file. This optimizes the necessary time in around 90%
. If "false" or not defined, the file source is retrieved and appended to the
- Fixed bug #00007: AutoPointcut "after" advice code that is appended even is
the previous comment is a return statement (problem of unreachable code)
- Added new pointcut modifiers:
. nclass: Not In Class
. nfunction: Not In Function
Both can have more than one item, just separate them via comma.
Added check if one item is defined in nclass and also in class XAD attribute.
Also added check to function and nfunction
- Recompile automatically if external advice code is changed. Part of it is
already implemented if asrequire has value "true". Otherwise, it is not checked
(consumes too much resources and time to do this)
- Updated package DTD
- Changed the compiled file name generator. Now it creates a more readable name