Nowości z php.internals – adnotacje
W niedawnym wpisie na liście php.internals, Pierrick Charron poinformował o stworzeniu patch’a dodającego obsługę adnotacji do php. Patch ten jest napisany zgodnie z odpowiednim RFC. Rozszerza on składnie języka, dodaje obsługę do refleksji i dwie nowe klasy ‘ReflectionAnnotation’ i ‘Inherited’ – pierwsza umożliwia tworzenie własnych adnotacji, natomiast druga umożliwia dziedziczenie adnotacji przez klasy dziedziczące z jakiejś klasy.
Jak dla mnie to ciekawy dodatek do języka, natomiast ja chętnie bym również widział jakąś implementacje Pythonowych dekoratorów o których już wcześniej wspominałem. A wy co o tym sądzicie ?
Related posts:
Nie spodziewałem się, że takie coś znajdzie się w PHP. Z adnotacji korzystam w C# (nie nazywają się adnotacjami, tylko atrybutami). Jeśli mają działać tak samo, to jestem na tak.
Tak czy inaczej zarówno php-owcy jak i sharpowcy wzorowali się na Javie ;P, polecam zagłębić się w RFC co do szczegółów.
RFC nie zawiera zbyt dużo szczegółów. Przykłady jak zwykle nieżyciowe
Najbardziej martwi mnie fakt, że do adnotacji trzeba będzie się dobierać przez refleksję. Może to spowodować niezłego „muła”. Dodając do tego taką kobyłę jak np Zend Framework i Doctrine uzyskamy idealne narzędzie do zabijania serwera
No fakt, że adnotacje będą czytane poprzez refleksje uważam za logiczny – w końcu są to metadane opisujące jakąś klasę/funkcję a więc pełnią role podobną do komentarzy czy listy argumentów funkcji, refleksja jest właściwym miejscem na takie rzeczy. Natomiast RFC i implementacja są cały czas w fazie ożywionej dyskusji więc możliwe, że finalnie będzie to trochę inaczej wyglądać.
Brak mi słów na te ich pomysły, ja jestem na nie. Nie widzę potrzeby istnienia tego w kodzie.
Nie neguję użycia refleksji do odczytywania adnotacji. Obawiam się jedynie, że skorzystanie z tego mechanizmu spowolni duże projekty jeszcze bardziej.
~cojack
Zobacz do czego służą atrybuty w ASP.NET MVC. Od razu Ci się spodobają.
Z tego co czytałem w dalszej dyskusji, to adnotacje są wiązane z definicją klasy w czasie kompilacji i podobno APC (i inne cache’e) będą mogły je cache’ować. Wynika z tego, że ma szanse to szybko działać. Co do użycia adnotacji to już teraz są one wykorzystywane w php (doctrine, phpdoc, phpunit i inne frameworki) ta propozycja jest próbą po pierwsze standartyzacji a po drugie stworzenia wygodnego API do odczytywania i manipulacji nimi.
Nie pozostanie nic innego jak uzbroić się w cierpliwość i czekać na oficjalne wydanie
No i mieć nadzieje, że tego nie zepsują