Test, sorry for the noise.

On Aug 26 13:56:09, Etienne Kneuss wrote:
> 
> ----- "Benjamin Eberlei" <kont...@beberlei.de> wrote:
> 
> > That is true, arrays dont allow for aliasing of any kind if
> > annotations
> > have different meaning in different frameworks.
> > With arrays you can at least use the one annotation for different
> > purposes
> > as long as these purposes don't define the same keys.
> > 
> > With Objects however you always need aliasing. PHPUnit will want to
> > have a
> > PHPUnit_Annotation_ExpectedException class, not an ExceptionException
> > class
> > only. However nobody would want to write:
> > 
> > [PHPUnit_Annotation_ExpectedException]
> > 
> > So when including PHPUnit, the annotation classes would probably
> > register
> > themselves as alias. Using a prefix for the aliasing begs the question
> > of
> > how to find the real class, if you have 2 or more aliases defined.
> > Iterate
> > over them and check for existance?
> > 
> > [ExpectedException] with many alises could be for example
> > PHPUnit_Annotation_ExpectedException, or
> > Doctrine\ORM\Mapping\ExceptedException or
> > Symfony\Framework\Form\Annotation\ExpectedException.
> > 
> > This sounds pretty expensive to me. So its probably better to have a
> > map
> > of alias => classname. But this is adding quite some management
> > overhead,
> > i.e. you need methods:
> > 
> > ReflectionAnnotation::registerAlias($alias, $className);
> > ReflectionAnnotation::hasAlias($alias);
> > ReflectionAnnotation::getAliases();
> > ReflectionAnnotation::getAliasClass($alias);
> > ReflectionAnnotation::getAliasFor($className);
> > 
> > Now say you have a library X with an Annotation aliased Bar (and you
> > also
> > use Framework Y with Annotation aliaased Bar).
> > 
> > [Bar]
> > class Foo
> > {
> > 
> > }
> 
> I don't understand why aliasing of class names suddenly becomes an issue, we 
> now have namespaces which allow aliases.
> 
> use NS\To\MyAnnotation as MyAnnot;
> 
> [MyAnnot]
> class Foo {
> 
> }
> 
> there is no need to have this aliasing mechanism at runtime as it will only 
> add more inconsistency to the plate.
> 
> Best,
> 
> > 
> > You call inside your library:
> > 
> >    $cls = new ReflectionClass($className);
> >    $annotations = $cls->getAnnotations();
> > 
> > What will happen if:
> > 
> > 1. The annotation classes are not loaded yet.
> > 2. Only the annotation classes of your library are loaded.
> > 3. Both annotation classes are loaded.
> > 
> > On Thu, 26 Aug 2010 13:12:13 +0200, Christian Kaps
> > <christian.k...@mohiva.com> wrote:
> > > On Thu, 26 Aug 2010 11:17:33 +0200, Benjamin Eberlei
> > <kont...@beberlei.de>
> > > wrote:
> > >> Hey,
> > >> 
> > >> 3.
> > >> Ok that point may be relevant, but there is also a semantically
> > nice
> > and
> > >> simple solution:
> > >> 
> > >> array('JoinTable' => array(
> > >>     'name' => 'users_phonenumbers',
> > >>     'joinColumns' => array(
> > >>         0 => array('JoinColumn' => array('name' => 'user_id',
> > >> 'referencedColumnName => 'id')),
> > >>         1 => array('JoinColumn' => array('name' => 'user_id',
> > >> 'referencedColumnName => 'id')),
> > >>     )
> > >> ));
> > >> 
> > > 
> > > [JoinTable(
> > >      name="users_phonenumbers",
> > >      joinColumns={
> > >          {JoinColumn={name="user_id", referencedColumnName="id"}},
> > >          {JoinColumn={name="user_id", referencedColumnName="id"}}
> > >      }
> > > )]
> > > 
> > > I think this gives you the same array structure as in your example
> > but
> > it
> > > uses no nested annotations.
> > > 
> > >> 
> > >> 5. You already mentioned further extensions with aliasing class
> > names
> > to
> > >> "shorten"
> > >> the annotations specification. However i see several problems with
> > that:
> > >> 
> > >> a.) It adds more code
> > >> b.) Classes/Methods/Functions/Properties that have annotations of
> > > multiple
> > >> annotation libraries
> > >> will cause pain with loading or autoloading of the necessary
> > annotation
> > >> classes.
> > >> c.) What happens if an annotation has no corresponding class?
> > >>
> > > 
> > > You write that the developers should implement her complex class
> > based
> > > solution in userland. How would you handle aliasing for classes
> > there?
> > > Anywhere I must define the alias or the namespace of the annotation
> > class,
> > > otherwise I must register all annotations(annotation name => fully
> > > qualified class name) used in my application before using them.
> > Using
> > > annotations from different frameworks with the same name makes this
> > a
> > pain.
> > > 
> > > Greetings,
> > > Christian
> > 
> > -- 
> > 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
> 

-- 
Etienne Kneuss

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

Reply via email to