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 ?

  1. batman pisze:

    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.

  2. Wojciech Soczyński pisze:

    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.

  3. batman pisze:

    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 :)

  4. Wojciech Soczyński pisze:

    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ć.

  5. cojack pisze:

    Brak mi słów na te ich pomysły, ja jestem na nie. Nie widzę potrzeby istnienia tego w kodzie.

  6. batman pisze:

    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ą.

  7. Wojciech Soczyński pisze:

    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.

  8. batman pisze:

    Nie pozostanie nic innego jak uzbroić się w cierpliwość i czekać na oficjalne wydanie :)

  9. Wojciech Soczyński pisze:

    No i mieć nadzieje, że tego nie zepsują 😉

  1. There are no trackbacks for this post yet.

Leave a Reply

Informuj mnie o odpowiedziach poprzez e-mail. Możesz również subskrybować wpis bez zostawiania komentarza.