Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marcelog/anoforphp
An experimental patch to PHP/ZendEngine to bring native annotations to PHP
https://github.com/marcelog/anoforphp
Last synced: about 11 hours ago
JSON representation
An experimental patch to PHP/ZendEngine to bring native annotations to PHP
- Host: GitHub
- URL: https://github.com/marcelog/anoforphp
- Owner: marcelog
- Created: 2011-03-12T23:14:51.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2011-03-18T15:29:46.000Z (almost 14 years ago)
- Last Synced: 2024-11-09T06:05:58.127Z (about 2 months ago)
- Language: PHP
- Homepage:
- Size: 418 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README
Awesome Lists containing this project
README
INSTALL
=======
1.- Download the patch.
2.- Apply with: patch -p1 < anoforphp-5.3.5.diff
3.- Compile and install PHP as usual.BEWARE
======
This is an *experimental* work. I'm not that familiar with the internals of ZendEngine(tm) so I wont promess there wont be any memory leaks, or crashes. It seems stable, but please report any issues you may spot so I can correct them as soon as possible ;)ABOUT
======
First things first, this patch is made for PHP 5.3.5, but it should be easy to port it to other 5.3.+ versions.Now, the idea behind this patch is pretty obvious. Annotations are a very popular thing and php lacks of them. Also, it's pretty expensive to have them inside doc blocks (i.e: /** */), so this patch is made mostly for the extension reflection of php and the ZendEngine2(tm).
The annotation token is "@@", because the "@" was already taken. So for instance, you would do:
@@AnAnnotation
@@AnotherAnnotation("something")
@@AnotherAnnotation(key1="value1")
@@AnotherAnnotation(key1="value1", key2="value2")
...
class something {
...
}also:
class something {
@@AnAnnotation
@@AnotherAnnotation("something")
@@AnotherAnnotation(key1="value1")
@@AnotherAnnotation(key1="value1", key2="value2")
...
public function aMethod() {
...
}
}And, best of all:
class something {
public function aMethod(@@AnAnnotation $a, @@An1 @@An2(key1="value1") $b) {
...
}
}Homepage
========
http://marcelog.github.com/Thanks To
=========
Pierrick Charron (https://github.com/adoy) for this comments on the use of TSRLM macros and also for his issue reports.