rfc:annotations

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
rfc:annotations [2011/05/09 23:23] guilhermeblancorfc:annotations [2014/02/17 07:06] – The TYPO3-family as a whole uses it for dep-injection etc. meanwhile (CMS, Flow, Neos, ...) neufeind
Line 4: Line 4:
   * Date: 2010-08-24   * Date: 2010-08-24
   * Author: Guilherme Blanco <guilhermeblanco@hotmail.com>, Pierrick Charron <pierrick@php.net>   * Author: Guilherme Blanco <guilhermeblanco@hotmail.com>, Pierrick Charron <pierrick@php.net>
-  * Status: Ready for discussion+  * Status: Declined
   * First Published at: http://wiki.php.net/rfc/annotations   * First Published at: http://wiki.php.net/rfc/annotations
  
Line 18: Line 18:
   * **Doctrine** For Object-Relational mapping, examples: @Entity, @OneToOne, @Id, etc.   * **Doctrine** For Object-Relational mapping, examples: @Entity, @OneToOne, @Id, etc.
   * **Zend Framework Server classes** Used to automate mappings for XML-RPC, SOAP, etc.   * **Zend Framework Server classes** Used to automate mappings for XML-RPC, SOAP, etc.
-  * **FLOW3** for dependency injection and validation+  * **TYPO3** for dependency injection and validation
   * **Symfony2** for routing rules   * **Symfony2** for routing rules
   * **Others** One clear thing that comes to my mind is Validation, Functional Behavior injection (which could take advantage of [[rfc:Traits]]), etc. Also, any Framework could take advantage of it somehow.   * **Others** One clear thing that comes to my mind is Validation, Functional Behavior injection (which could take advantage of [[rfc:Traits]]), etc. Also, any Framework could take advantage of it somehow.
Line 108: Line 108:
  
 Annotations can be defined on classes, methods, properties, functions or function parameters. Annotations can be defined on classes, methods, properties, functions or function parameters.
-ReflectionAnnotation is an interface the must be implemented in order to accept an Annotation definition. +ReflectionAnnotation is an interface that must be implemented in order to accept an Annotation definition. 
-Once this class is extended, the subclass is ready to be used an an Annotation:+Once this class is extended, the subclass is ready to be used as an Annotation:
  
 <code php> <code php>
Line 144: Line 144:
     public $target;     public $target;
          
-    public function __construct($url, $target)+    public function __construct($url, $target = null)
     {     {
         $this->url = $url;         $this->url = $url;
Line 232: Line 232:
 </code> </code>
  
-Please notice that multiple instantiation of same Annotation is left intentionally for discussion. It can be supported.+Please notice that multiple instantiation of same Annotation is left intentionally for discussion. It could be supported.
 Also, the inheritance of Annotations is left for discussion too. This can be done by 2 different approaches: Also, the inheritance of Annotations is left for discussion too. This can be done by 2 different approaches:
  
Line 298: Line 298:
   * Possible usage of "annotation" as keyword instead of an abstract class.   * Possible usage of "annotation" as keyword instead of an abstract class.
   * Tokens for start/end. Currently it's "<" and ">".   * Tokens for start/end. Currently it's "<" and ">".
 +  * Nested Annotation declaration: <Foo(<Bar>)> or <Foo(new Bar)> (this changes the EBNF if any change is agreed). Currently the supported one is: <Foo(<Bar>)>
   * Multiple instantiations of Annotation classes on a same block.   * Multiple instantiations of Annotation classes on a same block.
   * Inheritance of classes/properties/method and Annotations declarations.   * Inheritance of classes/properties/method and Annotations declarations.
Line 303: Line 304:
 ===== Patch ===== ===== Patch =====
  
-Ongoing.+Patch : [[http://www.adoy.net/php/Annotations-v3.diff]]  
 + 
 +Tests : [[http://www.adoy.net/php/Annotations-v3-tests.diff]]
  
 ===== Changelog ===== ===== Changelog =====
rfc/annotations.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1