Nowości z php.internals – annotation strikes back
Posted in php, programowanie on maj 12th, 2011 by Wojciech Soczyński – 16 CommentsOd czasu rozpoczęcia się wątku o PHP 5.4 na liście php.internals, jak bumerang powrócił temat adnotacji. Nasi drodzy deweloperzy doszli do nowego konsensusu (poprzedni odrzucał adnotację) i stwierdzili, że może nie są jednak one takie złe. W efekcie tego powstała nowa propozycja RFC, główne zmiany jakie w niej widzę, to zmiany składniowe (o które były największe bitwy ostatnim razem). W nowej propozycji adnotacje mają postać miksu phpDoc i formatu JSON. Nowa składnia behold:
/** * Foo class. * * @Entity {repositoryClass: "FooRepository"} * @Table {name: "foos"} * * @author "Guilherme Blanco" */ class Foo { // ... }
Na pierwszy rzut oka zdaję się być kompatybilna z istniejącym rozwiązaniem (phpDoc). Jednak wszystko zależy od konkretnej implementacji parsera. Wykorzystanie:
$reflClass = new \ReflectionClass('Foo'); var_dump($reflClass->getAnnotations()); /* array(3) { ["Entity"]=> object(ReflectionAnnotation)#1 (1) { ["value"]=> object(stdClass)#1 (1) { ["repositoryClass"]=> string(13) "FooRepository" } } ["Table"]=> object(ReflectionAnnotation)#2 (1) { ["value"]=> object(stdClass)#1 (1) { ["name"]=> string(4) "foos" } } ["author"]=> object(ReflectionAnnotation)#3 (1) { ["value"]=> string(16) "Guilherme Blanco" } } */
Propozycja będzie jeszcze pewnie wiele razy dyskutowana, oczekujcie więc więcej informacji z tego pola bitwy 😉