Comments (3)
I may have overlooked the named pointcut concepts, but how is it different from a simple constant ?
<?php
//define pointcut for all delete methods
define('POINTCUT_DELETE', '**/*->delete*()');
aop_add_before(POINTCUT_DELETE, $closure);
from aop.
True, on the language level of your extension that is about the same. We could have done that as well, I guess.
But when you combine named pointcuts with another expression, it becomes a little messy:
<?php
define('POINTCUT_DELETE', '**/*->delete*()');
aop_add_before('(Foo->bar() && ' . POINTCUT_DELETE . ') || Baz->Quux()' , $closure);
The other thing is, it pollutes the constant namespace - but only for a given PHP namespace, so it might not be that bad.
from aop.
Ok, I now understand your point.
We could as you propose include some kind of a pre-parse for selectors like
<?php
aop_pointcut_define('**/*->delete*()', 'pointcut_delete');
aop_add_before('(Foo->bar() && pointcut_delete ) || Baz->Quux()' , $closure);
Maybe more then
<?php
aop_pointcut_define('**/*->delete*()', 'delete');
aop_add_before('(method(Foo->bar()) && pointcut(delete) ) || method(Baz->Quux())' , $closure);
The global syntax is really to be think of. I'm really the kind of person who prefer simplicity over completeness in API, letting the user define his own "what the base syntax cannot do".
I think we'll have to wait for more feedback and decide the way to go with this.
from aop.
Related Issues (20)
- php5-fpm load error
- RC: what is the major changes fixed ?
- ini_set ('aop.enable', 0) has no effect here HOT 1
- PHP Error: Unable to load dynamic library '/usr/lib/php5/20100525/AOP.so' - /usr/lib/php5/20100525/AOP.so: cannot open shared object file: No such file or directory in Unknown on line 0 HOT 1
- Provide links to Windows extension DLLs HOT 2
- Cant load extension on mac OSX 10.7.5
- process() call in around-advice fails for exception with exceptiontext
- Call to parent with static method fail.
- Status of this project HOT 5
- Add support for annotations HOT 1
- Is it possible to disable the execution of a single aspect during runtime?
- getStartLine() or getEndLine() of ReflectionFunction don't work as expected and return 'null' when registering an aspect
- Static property access pointcut does not trigger on a static property read or write join point and advice is not executed
- No data received error in the browser when re-throwing the same caught exception in aop_add_after_throwing() and using getKindOfAdvice() inside the advice itself
- The extension causes the PHP yield statement to result into an infinite loop HOT 4
- Installation Failed HOT 1
- "Old-school" PHP code weaving HOT 2
- PHP 7.0 compatibility? HOT 3
- Compile succeeds, make test fails 3 times (and ofcourse errrors in operation) HOT 2
- Pointcut on certain internal functions causing "could not obtain parameters" HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aop.