Jul 22

Bolk открыл для сеня потрясающую новость - в PHP 5.3 будут замыкания и реальные lambda-функции. Поподробнее читаем здесь, а также у Bolk’а здесь и здесь (кстати говоря - здесь еще обьясняется, как создаются lambda-functions в текущих версиях PHP, кто не знает - почитайте).

Не выдержал и проверил - поставил себе PHP 5.3:

C:\Program Files\PHP>php -v
PHP 5.3.0-dev (cli) (built: Jul 22 2008 12:21:12)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2008 Zend Technologies

Накидал простенький скриптец для тестов:

$lambda = function () { echo "Hello World!\n"; };
var_dump($lambda);

$lambda = create_function('', 'echo "Hello World!\n";');
var_dump($lambda);

И запустил его:

C:\Program Files\PHP>php test.php
object(Closure)#1 (0) {
}
string(9) " lambda_1"

Как видите - теперь функции являются полноценными обьектами (”Closure - is simply an additional class”), что, на мой взгляд, просто замечательно! Даешь функции высших порядков в PHP!

written by fxposter \\ tags: , , ,


23 Responses to “Closures и Lambda-functions в PHP 5.3”

  1. 1. Виктор Says:

    А почему бы не взять для использования другой, нормальный язык, в котором уже всё это будет и ничего не нужно ждать?)

  2. 2. FX Poster Says:

    И переписывать все существующие проекты на него? Менять хостинг (в нашем случае – убеждать заказчика сменить хостинг)? Это просто не вариант.

    PS. А почему PHP ненормальный язык? Желательно подоходчивее. :)

    PPS. Учти, что Python и Javascript я знаю (ну и Ruby немного), и тем не менее использую именно PHP.

  3. 3. Виктор Says:

    Зачем переписывать? Новые начинать.

    Зачем менять хостинг? Разве на хостинге нет рельсов?

    Это то и странно, что знаешь питон и руби, а пишешь на ПХП.

  4. 4. FX Poster Says:

    Зачем менять хостинг? Разве на хостинге нет рельсов?
    Нет. Хостинг не наш, а заказчика.

    Это то и странно, что знаешь питон и руби, а пишешь на ПХП.
    Привычка + стараюсь держать код в чистоте. Получается ввполне себе нормально. А Symfony вполне заменяет RoR/Django.

  5. 5. Виктор Says:

    Неужели у заказчиков шаред-хостинг за $5?

    Ну вот и вижу, что привычка…

  6. 6. FX Poster Says:

    Зачем переписывать? Новые начинать.
    Опять-же приходим к заказчику. :)

    Неужели у заказчиков шаред-хостинг за $5?
    У заказчика знакомые, через которых он “берет” хостинг. Там долгая и нудная история. И, к сожалению, обсуждению с заказчиком не поддающаяся. :(

    Ну вот и вижу, что привычка…
    Понимаешь – мне вполне удобно. :)

  7. 7. Виктор Says:

    Удобно?

    А так рад замыканиям, и ждёшь ФВП…

  8. 8. FX Poster Says:

    Да, вполне. Сейчас есть причины, по которым мне PHP не нравиться. Причем их немало. Но, как я уже говорил, я привык и мне юзать PHP удобнее, чем что-либо еще. :)

    А добавлениям фич (хороших фич) в язык, который я ежедневно использую я очень рад.

  9. 9. Денис Радченко Says:

    У меня пока нет времени на переучивание на Python/Django. Хотя и на PHP можно писать хорошо.

  10. 10. Гвидон Маляров Says:

    я как-то разговаривал с американцем, для которого мы делаем php-проЖекты. спрашивал – а почему бы нам не начать на python-е работать? он согласился, что питон язык дюже красивый, мол он сам на нем “как-то что-то” делал, но писать на нем web-проЖекты гораздо менее рентабельно чем на php…печальный факт – рынок, епть

  11. 11. Vadim Voituk Says:

    Приятное улучшение, вот только что-то не удается найти полный ChangeList от версии 5.3

  12. 12. bolk Says:

    Полный changelog есть в каждом снапшоте PHP 5.3: http://snaps.php.net/

  13. 13. FX Poster Says:

    У меня пока нет времени на переучивание на Python/Django. Хотя и на PHP можно писать хорошо.
    Почитай просто что-нибудь по функциональным языкам и функциональному программированию (я сам хочу, но никак не найду время). Говорят, полезно. :)

    Кстати говоря – я в последнее время очень часто использую array_filter/array_map в PHP, в основном вместо foreach’ей, потому такой код красивее и приятнее (абсолютное ИМХО!).

    Гвидон Маляров
    Если честно – не могу понять разницу в рентабельности. Для того, чтобы установить питон и настроить его на работу с сервером – совсем не обязательно что-то кардинально менять (собственно – просто берешь и устанавливаешь :-D ). Что именно нерентабельно?

    Vadim Voituk
    Еще есть 2 раздела в PHP Wiki: Todo PHP 5.3 и RFC.

  14. 14. Денис Радченко Says:

    FX Poster, после небольшого изучения Ruby/Python, я тоже начал пользоваться array_map, array_walk…, жалко, что не аналога array_map для хешей

  15. 15. FX Poster Says:

    Можно сделать:

    function array_map_with_values($callback, $hash) {
      return array_map($callback, array_values($hash), array_keys($hash));
    }
  16. 16. Денис Радченко Says:

    А это мысль!

  17. 17. Гвидон Маляров Says:

    нерентабельно платить $200 грамотному питон кодеру вместо $100 студенту. питон сложнее значительно. гораздо больше нюансов и мест где можно ошибиться. поэтому нанимать малограмотного питон-кодера все равно что брать на работу обезьяну с гранатой;). хотя для “гавносаетов”, что составляют большую часть выпускаемой нашими студиями “продукции” пхп самое то.

  18. 18. FX Poster Says:

    нерентабельно платить $200 грамотному питон кодеру вместо $100 студенту.
    По-моему такой вопрос не стоял. Почему python-программист должен стоить дороже?

    питон сложнее значительно. гораздо больше нюансов и мест где можно ошибиться. поэтому нанимать малограмотного питон-кодера все равно что брать на работу обезьяну с гранатой;). хотя для “гавносаетов”, что составляют большую часть выпускаемой нашими студиями “продукции” пхп самое то.
    Фигня. То, что делается на PHP – делается на питон со сравнимой сложностью. В питоне больше возможностей, но если сравнивать именно так как ты написал – то дополнительные возможности можно не учитывать – в таком случае я не понимаю разницы в рентабельности.

  19. 19. Vadim Voituk Says:

    О чем вы спорите?
    О том что у PHP порог входа ниже? О том что для начинаеюще перейти от простого HTML к примитивному PHP легче? Или о том, что PHP более распостранен чем Python? Следовательно и стоимость разработчика выше? Или о том, что для того чтоб начать программировать на Python надо хоть чуть-чуть понимать основы, а не как с PHP (90%!!!!!! собеседуемых мной кандидатов не знали битовых операций).

    Лично мне Python начали преподавать в старших классах школы (кажется в 11м), и я по себе знаю насколько легче осваивается PHP и еже с ним, по сравнению с Python.

    Да и вообще это больше похоже не на спор, а на попытки отмахнувшись от комментатора растопырить пошире пальцы.

    >> “просто берешь и устанавливаешь”
    Ага, а потом “просто берешь и программируешь”. В итоге получаются миллионы го%%окодеров, глядя на код каких начинаешь думать что PHP suxx..

  20. 20. FX Poster Says:

    Vadim Voituk
    А почему? В чем разница между PHP и Python? Метапрограммирование? Другой синтаксис? Небольшой уклон в функциональщину? “Всё есть обьект”, включая “стандартные” типы типа строк и массивов?

    Ну не вижу я причины – почему на питоне нельзя писать “так же как и на PHP” (т.е. не используя вышеперечисленные “преимущества”) с теми же усилиями…

  21. 21. Гвидон Маляров Says:

    да, ты прав, луноходом поле можно не хуже трактора вспахать;)))

  22. 22. FX Poster Says:

    Гвидон Маляров
    Сильно :)

  23. 23. burgua Says:

    А чем тебе не нравится php?
    Что за причины? Можно в личку )

Leave a Reply