Hey everybody,

I've been following this list for a while (1-2 years) and this is the
first message I'm sending.
In my oppinion, annotations in docblocks are a bit(a lot) hacky and
making it even worse by adding them to core is not the best idea.

This is how I think annotations have to look like if implemented in
core (I've taken on of the annotation classes in Doctrine and
transformed it).

Declaration:

namespace Doctrine\ORM\Mapping;

use SplAnnotation, SplAnnotationInterface;

@Target({'PROPERTY', 'ANNOTATION'})
class JoinColumn implements SplAnnotation
{
        @SplAnnotation\String
        private $name;
        
        @SplAnnotation\Boolean
        private $unique;

        @SplAnnotation\Mixed
        private $onDelete;

        @SplAnnotation\String
        private $referencedColumn = 'id';
}

Usage:

<?php

use Lib\Mapping\ORM as ORM;

@ORM\Table()
@ORM\Entity()
class User {
        
        @ORM\Column(name="name", type="string")
        private $name;
        
        @ORM\OneToMany(targetEntity="Group", mappedBy="user")
        @ORM\JoinColumn(onDelete="CASCADE")
        private $groups;
}

Of course the syntax and interfaces are just an example for you to get
the concept.

I'm not very familiar with the internals of the language, so if this
is hard(not really possible) to implement, just ignore it.
However, I think that parsing annotations as a part of the syntax of
the language would be much faster (and less of a mess) and reliable
than
parsing strings in docblocks.

Bottomline, my idea is:
A native syntax outside docblocks that doesn't suck :)

Cheers,
Vladislav

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to