Hey Stas,

On 1 May 2016 at 00:14, Stanislav Malyshev <smalys...@gmail.com> wrote:

> > $def instanceof MyAnnotation; //TRUE
>
> That looks fine, however the problem is that if MyAnnotation is a class,
> then PHP does not have multiple inheritance, so it's the only class it
> can be. And given that your class has no methods, $def has no methods
> either and can not have any semantics besides simple data object. Which
> begs the questions:



Note that an annotation usage here is basically a constructor call for a
concrete instance.
Still, this doesn't deny implementing interfaces for annotations, then
implementing those on the concrete annotation class.
I don't see the need for multiple inheritance therefore.

a) why it needs to be a class/object at all


Usually as a replacement for what you'd have as a "struct" in C.
Having a class definition provides some basic security on what is going on
(type-hints, etc).
You probably wouldn't ever have behavior on an annotation though, since it
is just a data structure: in fact, most of the existing annotations in PHP
userland libs are currently just classes with constructor+public properties.

Cheers,

Marco Pivetta

http://twitter.com/Ocramius

http://ocramius.github.com/

Reply via email to