Martin Scotta

On Tue, May 10, 2011 at 5:02 AM, Lars Schultz <lars.schu...@toolpark.com>wrote:

> Am 10.05.2011 09:44, schrieb Ferenc Kovacs:
>
>  On Tue, May 10, 2011 at 9:01 AM, Chad Fulton<chadful...@gmail.com>
>>  wrote:
>>
>>  On Mon, May 9, 2011 at 10:46 PM, Lester Caine<les...@lsces.co.uk>
>>>  wrote:
>>>
>>>> *IS* it clear by now that the majority of users want this?
>>>>
>>>
>>> For what it's worth, I still oppose Annotations.
>>>
>>>  And the argument
>>>> that 'You don't have to use it' does not wash either since once it has
>>>>
>>> been
>>>
>>>> pushed in, some of the libraries we are using are going to start
>>>>
>>> requiring
>>>
>>>> it simply because those developers do like the idea, but it does not
>>>> necessarily mean that THE CURRENT PROPOSAL is the right way of doing it?
>>>>
>>>
>>> I especially oppose the complexity of the current proposal. One of the
>>> reasons I prefer PHPDoc to the proposed Annotations is because they're
>>> a simple key=>value syntax.
>>>
>>>
>> that would be the same argument that we don't need objects because we have
>> arrays, and if you only need something to store your structures, then both
>> can be used for that.
>>
>>
>>
>>> I'm already doing my coding in PHP - why do I have to code in a new
>>> sub-language when all I want is a litte bit of meta-data?
>>>
>>>
>> nobody is forcing you to use annotations, it won't replace the docblocks.
>>
>>
>>
>>> My main question is: Why do we need more than key=>value? When you say
>>> that "everyone" supports annotations (if that is true), are you sure
>>> they actually want more than key=>value?
>>>
>>>
>> at least Doctrine, Symfony and FLOW3 does.
>> Sebastian expressed that he is fine with the current Docblock support for
>> PHPUnit.
>> the FLOW3 used to use single key values in the past, but I'm not familiar
>> with the current situation.
>>
>> for actual use-cases you can check
>> http://blog.seric.at/2011/05/03/annotations-with-symfony2/
>> or
>>
>> http://www.doctrine-project.org/docs/orm/2.0/en/reference/annotations-reference.html#annref-column
>>
>>
>>
>>
>>> Discussion of this does not seem to appear in your "Why do we need
>>> Class Metadata?" section.
>>>
>>>
>> I also think that it would be a good idea to link or describe annotations
>> in
>> general, because it seems that nobody bothers to read that up without
>> joining the conversation...
>>
>> Tyrael
>>
>>
> From the user-end perspective, what I don't understand is this:
>
> What is the goal of having Annotations embedded in PHP? To nail down a
> common syntax? To provide an interface for meta-information on a class?
>
> Why can't this be PHP code? Why should I have to learn a whole new kind of
> syntax? We already have a common syntax (PHP interface) for this as well as
> an interface (static Class-functions/Object-methods).
>
> To explain what I mean, I'll use the example provided in the RFC. Could
> anyone please explain the advantages of having "passive" annotations over
> "active" PHP Code.
>

Annotated code integrates best with library/frameworks without the need to
"extends" or "implements".
Without annotation you will need to extend some class or to implement some
interface. That means more code to write, more chances to shoot you foot.

With annotation your classes are unaware of the other components, which
implies:
* shorter, concise code => less bugs
* no extra dependencies => easy to test

class UserFoo extends LibraryFoo { }
class UserBar implements LibraryBar {
   // even worst you will need to write some methods here
}

With annotations classes are "free" to live on you own herarchy

<LibraryFoo> class UserFoo extends UserFooBase { }
<LibraryBar> class UserBar { }


> <Entity("users")>
> class User
> {
>    <Column("integer")>
>    <Id>
>    <GeneratedValue("AUTO")>
>    protected $id;
>
>    // ...
>
>    <ManyToMany("Phonenumber")>
>    protected $Phonenumbers;
> }
>
> *** Example ***
>
> class User implements EntityAnnotation {
>        protected $id;
>        protected $Phonenumbers;
>
>        public function getEntityAnnotation(){
>                return new User_EntityAnnotation();
>        }
> }
>
> class User_EntityAnnotation {
>        public function getEntityName(){
>                return 'users';
>        }
>
>        public function getColumnInfo($property){
>                switch( $property ) {
>                        case 'id': return array(
>                                'column'=>'integer',
>                                'isPrimary'=>true,
>                                'autoIncrement'=>true
>                        );
>
>                        case 'Phonenumbers': return array(
>                                'manytomany'=>'Phonenumber'
>                        );
>            }
>    }
> }
>
> ***************
>
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Reply via email to