Nowości z php.internals – double colon i 5.4 alpha

Podczas ostatnich kilku dni na internalsach toczyła się dość jałowa dyskusja nad tym, czy należy zmienić przy błędzie parsera nazwę tokena T_PAAMAYIM_NEKUDOTAYIM na T_DOUBLE_COLON. Samą dyskusję podniósł pewien anonimowy administrator, który zaczął się żalić, że początkujący użytkownicy zgłaszają się do niego ponieważ nie rozumieją o jaki błąd chodzi. Ta dyskusja ciągła się przez kilka dni i z merytorycznej prawie od razu przerodziła się w polityczną. Na szczęście niektórzy się opamiętali i potrafili wyciągnąć jakieś wnioski. Felipe Pena stwierdził, że najlepszym rozwiązaniem całego problemu będzie po prostu ogólnie nie wypisywać przy błędach parsowania nazw tokenów a powiązać je z ich rzeczywistą reprezentacją, tak dla T_PAAMAYIM_NEKUDOTAYIM było by to ‚::’.

Niedługo po zakończeniu wątku z tokenami, Derick Rethans, który chyba powoli kreuje się na managera wydania 5.4, założył kilka wątków co do zmian w języku, które mają się znaleźć w 5.4. Zapowiedział również pierwszą alphę na 24-tego listopada. Zmiany, które miały by się znaleźć w tym wydaniu to dołączenie APC, traits, które już są w trunku od dawna i type hints. Zobaczymy co jeszcze tam się znajdzie bo widać, że temat jest rozwojowy.

  1. batman pisze:

    Literówka – „Ta dyskusja ciągła się…”
    A z PHP 5.4 czekam najbardziej na type hint. Mam nadzieję, że nie będą wydziwiać i zrobią to w ludzki sposób.

  2. To co oznacza „ludzki sposób” jest kwestią dyskusyjną. Natomiast mi ostatnia propozycja type hintów odpowiada w 100%. Polega ona na tym, że jeżeli zadeklarujemy funkcję jako function foo(int $a){} to będziemy ją mogli wywołać zarówno z „123”, 123 jak i 123.0, interpreter sam przeprowadzi rzutowanie na int o ile jest to możliwe. Jeżeli nie jest to wyleci warning, to samo stanie się gdy rzutowanie będzie się wiązało ze stratą danych np float -> int.

  3. batman pisze:

    W sumie masz rację. Trudno będzie przypodobać się wszystkim. Chodziło mi o coś takiego:

    function foo(int $number)
    {
    /* something */
    }

    Jednak już interpretowanie „123” jako int, a nie string, będzie „nieludzkie”. Skoro mam zapisane „123” to chodzi mi o string, a nie int. Z drugiej strony PHP zapisuje jako string wszystko co pochodzi z zewnątrz (z bazy, z plików),

  4. Wg mnie to jest po prostu kwestia abstrakcji. Dla jednego (np. dla mnie) 123 i „123” to jest to samo jeżeli chodzi o informacje jaką zawiera. Jeżeli typuje argument funkcji na int to po prostu wyrażam intencję, że ten argument zawiera w sobie liczbę całkowitą, niezależnie od tego jakiego jest fizycznie typu. Zresztą tak czy inaczej argument, który dostaniesz wewnątrz funkcji i tak będzie tym upragnionym int-em, nie ma więc o co rozdzierać szat. Natomiast dzięki temu, że nie jest to typowanie na fizyczny typ zmiennej to oszczędza roboty osobie korzystającej z twojego API.

  5. Szkoda, że nie będzie już T_PAAMAYIM_NEKUDOTAYIM, to taki folklor PHP, mi się on akurat podoba, tym bardziej, że nie wiem kogo boli te parę klików w Google żeby się dowiedzieć o co chodzi. Skoro 24.11 będzie alpha 5.4, to może już za kilka miesięcy będzie jakieś pierwsze RC?

  6. No ja też to w pewnym sensie lubie. Natomiast fakt faktem dla początkujących jest to pewne utrudnienie. Najgorzej chyba dla ludzi dla których php jest pierwszym językiem programowania, wtedy mogą być naprawdę w kropce. To czy pierwsza alpha będzie 24.11 to sprawa otwarta jeszcze, jak narazie to tylko propozycja, nikt jeszcze nie powiedział „tak”. Co do RC to ja bym się go szybko nie spodziewał, wszyscy w końcu wiemy jak się ciągnie proces developerski w php…

  7. thek pisze:

    Z tym rzutowaniem w locie do innych typów można spojrzeć na kilka sposobów. Przykład wspomnianego „123” można rozpatrzyć jako:
    – całość traktujemy jako int i dostajemy 123, czyli to o co pewnie chodzi userowi,
    – string jest tak po prawdzie tablicą znaków, a więc przyjmując konwencje części języków, powinien być rzutowany na int tylko pierwszy jej element, czyli 1, co już tak do końca intuicyjne nie jest 😉

  8. No jak dla mnie od tego jaka zmienna ma typ ważniejsze jest, jaką informacje niesie. Dlatego też obojętne mi jest czy dostanę 123 czy „123” czy 123.0, zawsze będzie to po prostu ta liczba…

  9. Dariuszp pisze:

    Pragnę zauważyć że Google nam nie jest tu potrzebne. W końcu mamy http://www.php.net/manual/en/tokens.php gdzie jest lista tokenów i to co sobą reprezentują. Nic nie stoi na przeszkodzie by uruchomić własny error handler który się zajmie takimi rzeczami. Zwłaszcza że słyszałem że do PHP chcą wprowadzić możliwość stosowania własnego error handlera nawet dla błędów składni (ciekawe jak to zrealizują).

  10. @dariusz
    wszystko spoko, tylko obawiam się, że jeżeli ktoś jest całkiem początkujący to sam się nie domyśli takiej strony 😉

  1. […] wiadomości z tego serwisu Follow us on Twitter 76 śledzących RSS Feed 360 czytelników Nowości z php.internals – php 5.4 alpha 1 głosuj! Najnowsze informacje z obozu twórców PHP. Plany wydawnicze i zmiany w […]

  2. […] list. Wojtek Soczyński, bo o nim mowa, popełnił na początku miesiąca wpis zatytułowany Nowości z php.internals – double colon i 5.4 alpha. Pomijając cześć o T_PAAMAYIM_NEKUDOTAYIM, można się z niego dowiedzieć, że chłopaki od PHP […]

Leave a Reply

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