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