Re: Re: PHP Annotations RFC + Patch

From: Date: Sat, 11 Sep 2010 17:46:58 +0000
Subject: Re: Re: PHP Annotations RFC + Patch
References: 1 2 3 4 5 6 7 8 9  Groups: php.internals 
Request: Send a blank email to internals+get-49599@lists.php.net to get a copy of this message
Hi Stas and Christian, The separator never was a problem... but I definately don't want to see another 6 months just to define what would the separator be. If we need to drop [] in favor of array support, I vote for ! as separator. !Author("Guilherme Blanco") !Validation(!Email(checkMX = true)) @Stas: Explaining the example of class User { [Validation([Email(checkMX = true)])] public $email; } class Validation extends \ReflectionAnnotation {} class Email extends \ReflectionAnnotation { protected $checkMX; public function getCheckMX() { return $this->checkMX; } } $reflClass = new \ReflectionClass('User'); $reflProp = $reflClass->getProperty('email'); $emailAnnot = $reflProp->getAnnotation('Validation')->getValue(); echo $emailAnnot->getCheckMX(); // true I hope this helps to explain a little bit. Cheers, On Sat, Sep 11, 2010 at 8:00 AM, Christian Kaps <christian.kaps@mohiva.com> wrote: >  Hi, > >>> %Annotation(%Email(checkMX = true)); > > at first I thought what for an ugly syntax. But after a time I think it > is regardless of whether the % or @(from Java, which I prefer over all, > if it were possible) syntax is used. It looks very similar. So I prefer > the % syntax so we can use the [] for defining arrays in annotations. Is > it possible to define objects from type stdClass in the form > %Annotation({key: 'value'})? > > An other question. Is it necessary to terminate an annotation with a > semicolon, like in your example? > > class Compiler { > >    /** >     * Compile a node into plain PHP. >     * >     * @param Node $node The node to compile. >     */ >    %Annotation(%Email(checkMX = true)) >    %ResourceParameter(['key' => 'name', 'value' => > 'annotation']) >    %Inject('\my\name\space\Class') >    %Test >    %Annotation({key: 'value'}) >    public function compile(Node $node) { > >    } > } > > Greetings, > Christian > > Am 11.09.2010 02:23, schrieb Pierrick Charron: >> Hi Stas, >> >> Annotations is a new concept in PHP (even if some framework already >> use an user space implementation of them) and I think it is normal >> that people will have to read a little bit about this eventually new >> feature before using it. This is the same thing for traits, if you >> don't know what is a trait you will not know how to use them. But once >> you know the concept it's really easy to understand what is an >> annotation class, parameter etc... >> >> Is it really the [] Syntax that you don't like for annotations ? I was >> personally not against the [] array syntax and I understand that this >> annotation syntax will make the future implementation of this [] array >> syntax impossible. So I could change it to the syntax proposed by >> Etienne in the first thread : >> >> %Annotation(%Email(checkMX = true)); >> >> I'm not against any other proposal of syntax so if you have one to >> proposition do not hesitate. >> >> Regards, >> Pierrick >> >> >> >> 2010/9/10 Stas Malyshev <smalyshev@sugarcrm.com>: >>> Hi! >>> >>>> [Validation(Email(checkMX=>true))] looks better. >>> Even here it's not clear what is happening. What is "Validation", what >>> is >>> "Email", what is "checkMX" (are they all classes? or only some of >>> them?), >>> what is happening to them (are these classes being instantiated? when? what >>> is passed as parameters? What is the scope of that? etc). Why can we have >>> now two ways to instantiate classes, complete with mix of []s and ()s, but >>> having array syntax using [] is still too complex? >>> >>> -- >>> Stanislav Malyshev, Software Architect >>> SugarCRM: http://www.sugarcrm.com/ >>> (408)454-6900 ext. 227 >>> >>> -- >>> PHP Internals - PHP Runtime Development Mailing List >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> >>> > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Guilherme Blanco Mobile: +55 (16) 9215-8480 MSN: guilhermeblanco@hotmail.com São Paulo - SP/Brazil

« previous php.internals (#49599) next »