Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.

Приятного чтения!


Новости и релизы




PHP


  • RFC: Short Closures — В PHP 7.1 предлагается реализовать короткий синтаксис для анонимных функций: $x ~> $x + 1; Подобное уже реализовано, например, в Hack: $x ==> $x + 1;.


Инструменты


  • voryx/ThruwayWAMP (Web Application Messaging Protocol) роутер и клиент для PHP.
  • Sami — Генератор документации к API. Туториал.
  • MacFJA/PharBuilder — Автоматизирует создание phar из Composer-пакета.
  • Visithor — Библиотека для тестирования роутов на ожидаемые HTTP-коды. Пост в поддержку.
  • phpbadge — Инструмент для создания svg-бейджей.
  • davispeixoto/PHP-Batch — Библиотека для реализации батч-процессинга.
  • wapmorgan/PhpCodeAnalyzer — Анализатор используемых расширений PHP в коде, не включенных в ядро. Прислал wapmorgan.
  • PHPPm — Менеджер пакетов, один из возможных вариантов развития composer. Прислал wapmorgan.
  • AsyncTask — AsyncTask делает возможным правильное и простое использование потока. Прислал dmamontov.
  • DavBackup — Создание резервных копий сайтов в облаках через WebDAV. Прислал dmamontov.
  • gatakka/PGF-Router — Концепт роутера без использования регулярных выражений.
  • Codebug — PHP Xdebug client frontend — Легковесный отладчик для Mac OS X.
  • dantleech/phpbench — Инструмент для бенчмарков.
  • libphonenumber for PHP — Библиотека для парсинга, форматирования и валидации международных телефонных номеров.
  • BitOne/php-meminfo — Расширение предоставляет информацию об использовании памяти в PHP.
  • JakubOnderka/PHP-Parallel-Lint — Инструмент проверки синтаксиса, анализирующий файлы параллельно.
  • TidalLabs/Slacker — Консольный клиент для Slack.


Материалы для обучения




Занимательное


  • Cherimola Library — Когда обычных true и false недостаточно. Прислал elfet.


Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.

Присылайте ссылки на интересные статьи или полезные инструменты, которых не было в PHP-Дайджестах, и ваше имя будет рядом с присланной ссылкой в выпуске.

Прислать ссылку
Быстрый поиск по всем дайджестам
< Предыдущий выпуск

Комментарии (60)


  1. Fedot
    12.05.2015 00:28
    -3

    RFC: Short Closures — В PHP 7.1 предлагается реализовать короткий синтаксис для анонимных функций

    Вот не могу понять зачем это нужно? Глазами ведь выцепить такое при чтении кода будет в разы сложнее.


    1. LastDragon
      12.05.2015 07:37
      +2

      Нужно — сейчас слишком многословно получается, но вот тильда?! *рука лицо*


      1. janson
        12.05.2015 10:43
        -1

        Ну сейчас по-крайней мере анонимная функция при её описании выглядит как функция. А вот это '~>' — сахар ради сахара?
        Раздел с описанием предлагаемого синтаксиса — настораживает. Получится такая же шаурма со стилем именования функций PHP, за что его ругают, но только теперь — с новым синтаксисом.
        Теперь — банановый.


        1. LastDragon
          12.05.2015 12:22
          +1

          > А вот это '~>' — сахар ради сахара?

          А вот это есть практически во всех языках (и даже в java где оно совсем-совсем чужеродно), ибо набирать километры незначащего кода очень быстро надоедает.


    1. dim_s
      12.05.2015 08:57
      +2

      У меня возникает только один вопрос, почему нельзя использовать комбинацию "->" вместо "~>".


      1. LastDragon
        12.05.2015 09:07
        +1

        Убогий парсер. Из-за этого практически все новые синтаксические конструкции вводятся с помощью новых ранее не используемых символов (пространства имен, например), а т.к. "->" уже занято, то выбрали свободную тильду (минусующий, как её набирать то?).


        1. gro
          12.05.2015 09:45
          +1

          Так они же тотально переписывали парсер и теперь всё должно было стать круто.


          1. LastDragon
            12.05.2015 09:57

            Они точно переделали внутренности интерпретатора (http://habrahabr.ru/post/222219/) за счет чего и получили ускорение, а вот насчет парсера я не уверен.


        1. dim_s
          12.05.2015 10:11

          Мне интересно, чем оно забито, если такой комбинации еще нет. Даже если считать что это "-" и ">", то как тогда реализовали "=>" как "=" и ">" и плюс к этому в foreach и объявлении массивов?


          1. gro
            12.05.2015 10:24
            +2

            $obj->method();


            1. dim_s
              12.05.2015 10:40
              +1

              Совсем забыл, точно. Облом =( Тогда понятно почему ~>, а ==> выглядит еще более убого.


    1. AmdY
      12.05.2015 18:07

      У вас очень правильное замечание. Мне кажется следует использовать правило как в других языках — больших анонимок лучше использовать полное function, а для однострочных ~>
      В примерах есть usort($array, ($a, $b) ~> $a->val <=> $b->val);
      usort($array, function($a, $b) { $a->val <=> $b->val; }); — PSR этот код просит разнести на пару строк из-за {}


  1. SamDark
    12.05.2015 03:01
    +1

    PSR-7 уже на повторном голосовании. Проходит с перевесом.


    1. LastDragon
      12.05.2015 07:44

      А оно кому-то вообще нужно? Особенно учитывая что они сами пишут что практически все существующие библиотеки не используют value object…


      1. zviryatko
        12.05.2015 11:16
        +1

        Всем нужно, это первый шаг к тому чтобы в итоге библиотеки были заточены не под фреймворки а под php в целом.


        1. SamDark
          12.05.2015 12:40

          Кроме того, это позволяет авторам фреймворков подумать вместе над серьёзными архитектурными штуками. Одна голова — хорошо, десять лучше.


      1. SamDark
        12.05.2015 12:38

        На самом деле да:

        1. Изолируют request/response практически все современные фреймворки, но делают это каждый по своему.
        2. value object не нужен до тех пор пока мы не начнём использовать что-то вроде reactphp.org или daemon.io. Они всё более популярны. Знаю человека, который запускал по такому принципу Yii в продакшне.


        1. LastDragon
          12.05.2015 13:10

          2. А там вроде уже не настоящий value object — в последней версии разрешено возвращать $this из with* если оно не привело к изменению значения, интересно, какие из with* методов подходят?


          1. SamDark
            12.05.2015 13:46

            Разве возврат того же инстанса в случае не изменения значения противоречит value object?


            1. LastDragon
              12.05.2015 14:05

              Как/кем определяется изменилось значение или нет?


              1. SamDark
                12.05.2015 14:21

                Классом, реализующим интерфейс. Скорее всего, все будут делать так:

                if ($this->something === $newValue) {
                    return $this;
                }
                


                1. LastDragon
                  12.05.2015 19:29

                  Вот, только это значит что в разных реализациях вполне может оказаться что изменение внутренностей не будет создавать клон. Утрируя: ну вот решил автор что при изменении заголовков сам запроса не меняется, а сама библиотека при этом офигенно-офигенная и нужна в нашем древнем проекте просто позарез — привет цепочки, привет отладчик, прощайте выходные… Если уж решили создать свой 15 стандарт с блекджеком и ..., то надо было делать максимально однозначно.


                  1. SamDark
                    13.05.2015 04:19

                    Не не не, если реализация по PSR, то при изменении (если данные поменялись) обязан создаваться новый инстанс. Этот момент как раз оговаривается явно.


        1. PQR
          12.05.2015 16:42

          Я вот ещё смотрю на RingPHP, который под капотом Guzzle 5+ — тоже вроде какая-то абстракция над HTTP. Как это всё соотносится?


          1. SamDark
            13.05.2015 04:21

            PSR сделан теми же людьми, см. member projects. На него со временем большинство там упомянутых перейдут.

            Вообще PSR-ы пишутся бег оглядки на существующие реализации. На будущее.


  1. Freezy
    12.05.2015 06:29
    +2

    github.com/davispeixoto/PHP-Batch — классы все пустые.


    1. PQR
      12.05.2015 16:40

      Там в описании внизу написано: An amazing «Thank you, guys!» for Jetbrains folks, who kindly empower this project with a free open-source license for PhpStorm — кто-то запилил себе бесплатную лицензию на PhpStorm, понаписав open-source пустых классов!)


  1. sectus
    12.05.2015 08:17

    Замкание всей области видимости в функцию — это, мне кажется, слишком не «php way». Появятся проблемы с производительностью и циклическими ссылками, которые ещё не готовы решать.


  1. gro
    12.05.2015 09:50
    +3

    10 вещей про симфони признано экстремистским материалом.
    Фабпот подсуетился.


  1. lucky_brick
    12.05.2015 10:33
    +2

    Замкание всей области видимости в функцию — это, мне кажется, слишком не «php way». Появятся проблемы с производительностью и циклическими ссылками, которые ещё не готовы решать.

    полностью согласен с оратором. никогда этого не было и то что в майнтенерах пхп появилось несколько «ужаленных» которые пытаются тащить из скалы, ерланга, хаскела и при этом тащить просто какие-то фишки это плохо

    вот новое ядро — это хорошо.

    если уж захотелось сделать покороче… то простой почти безболесненный способо это сделать ввести алиас для function — например fun

    но этж ну вообще не главное!

    надо думать о развитии SPL!!!


    1. dim_s
      12.05.2015 10:45

      С чего вы взяли, что такая фишка есть только в скале, ерленге и хаскеле. Короткий синтаксис есть в C#, Java 8, C++, Dart, JavaScript (ES6), Perl6, Groovy, Python, Swift и еще во многих языках. Он полезен и удобен, особенно во всяких event-подобных штуках.

      Замыкание скорее всего будет производится не всей области видимости, а только тех переменных, которые используются внутри функции, главное чтобы разработчики php верно реализовали это.


      1. sectus
        12.05.2015 12:13

        Да, действительно. ...all variables used in the body of the anonymous function will automatically be bound to the anonymous function closure from the defining scope.

        Вещь в любом случае интересная.


    1. vshemarov
      12.05.2015 10:46
      +1

      надо думать о развитии SPL!!!

      И в первую очередь — о его производительности. SPL-итераторы — очень интересная вещь, но тормоза в 7 раз по сравнению с обычными циклами — это жуть.


      1. dim_s
        12.05.2015 12:07

        Итераторы обычно нужны для экономии памяти, для ленивых операций над коллекциями. В задачах где требуются итераторы тормоза в 7 раз не делают погоды. Цепочка итераторов способна творить чудеса по производительности, как пример Stream API из Java 8.


        1. vshemarov
          12.05.2015 12:13

          Ну вот у меня есть задачи, где использование итераторов значительно сократило бы и объем кода и его читаемость, но я вынужден был отказаться от них именно из-за тормознутости.

          … как пример Stream API из Java 8

          Так в том-то и дело, что речь о реализации SPL-итераторов в PHP


          1. dim_s
            12.05.2015 12:21

            В любом случае, итераторы нельзя сделать быстрее, они никогда не смогут работать быстрее обычного цикла или с такой же скорость. Это объекты, вызовы методов, поднимается стек вызовов и на все это затрачивается время. Я думаю итераторы можно немного оптимизировать по скорости выполнения, но не намного.


  1. bestxp
    12.05.2015 11:05
    +3

    PHPPm и хостингер не выдержали хабраэффекта


    1. pronskiy Автор
      12.05.2015 15:18

      Поменял ссылку на гитхаб github.com/PHPPm/phppm


      1. bestxp
        12.05.2015 17:35
        +1

        А в кратце можно в чем их фишка? По гитхабу то считай тот же композер)


        1. happyproff
          13.05.2015 17:34
          +1

          Это менеджер composer-пакетов, которые собираются вести себя как системные пакеты, то есть имеют бинарники, конфиги в /etc, логи в /var/log и т.д.


  1. zviryatko
    12.05.2015 11:12

    Лучше вместо короткого синтаксиса анонимных функций сделали бы что-то похожее на stream API в java 8 www.deadcoderising.com/java-8-no-more-loops, только нативное, кстати вот реализация в одном фреймворке ouzo.readthedocs.org/en/latest/utils/functions.html#extract


  1. Alexeyco
    12.05.2015 11:37
    -1

    С одной стороны, некоторое количество php-кодеров (можете не любить нас, но мы есть) давно ждало от php некоего движения в сторону чего-то типа NodePHP. React — да, но это react. Это не php, а хотелось, чтобы к этому пришел Zend. Но теперь, когда я уже весь пропитался и проникся go, я уже ничего не жду. Мир и уважение Zend, PHP и всему сообществу их разработчиков и пользователей. Но давайте честно — не поздновато ли? Берем то, что есть в современном мире — хотя бы ту же самую NodeJS, и получаем потрясающий (не лишенный недостатков, конечно), стек возможностей, которых просто нет у PHP, который тоже недостатков не лишен, кстати. Прошу, не надо про HHVM и прочие, одичало-бесноватые, на мой личный взгляд, решения. Я постоянно слышу «PHP создавался не для этого». Но позвольте уточнить — не для чего создавался PHP? Не для создания современных сайтов?

    Да, есть кодовая база, чуть ли не самая огромная среди конкурентов — Wordpress… тот же Битрикс, как бы я к нему ни относился. Но всякие новые штуки выходят с использованием других технологий. Вот вы все как считаете — PHP быть? И сразу вопрос вдогонку — вы уверены, что не выдаете желаемое за действительное?


    1. SamDark
      12.05.2015 12:45
      +3

      Быть. Уверен. Новые штуки выходят с использованием всего и я бы не стал утверждать, что новых штук на PHP не выходит, это всё-таки 82% всего веба.


      1. dim_s
        12.05.2015 17:33

        82% от количества проектов, а не от количества посещаемости этих проектов. Миллион проектов на вордпресе и других cms делают эту статистику, но это же не значит, что в этих проектах участвует программист. Если бы можно было бы посчитать процент проектов, в которых участвовал программист, то это была бы справедливая статистика.


        1. SamDark
          13.05.2015 04:24
          +2

          М… хабр, Yahoo, Facebook, Wikipedia, Flickr, Digg, SourceForge, Вконтакте, mailchimp, Etsy, Zynga. Мало? Могу ещё.


          1. dim_s
            13.05.2015 09:07

            PHP is used by 82.0% of all the websites whose server-side programming language we know.


            Пишут, что от количества сайтов. Facebook -> Google, Microsoft, Bing, SourceForge -> Github, Bitbucket, Вконтакте -> Одноклассники, Twitter, можно приводить бесконечное число известных крупных проектов сделанных не на php. Поэтому я написал, что берут они от количества, т.е. любая минимальная страничка сделанная на php +1 к этому рейтингу.


            1. SamDark
              13.05.2015 13:44
              +1

              Конечно они считают количество. Посещаемость мало кто отдаёт. И всё-таки, я считаю, что такая метрика популярности довольно справедлива. Ничто не мешает делать мелкие проекты на том же Python или Ruby или Perl… на чём угодно. Но почему-то они не популярны для этих целей. В то же время, сверхкрупные проекты на PHP делаются и успешно.

              Я не утверждаю, что PHP очень хорош как язык, но он развивается, он отлично подходит для веба, лучше, чем остальные, и будущее у него определённо есть. Даже если он умрёт, то медленно и не скоро.


              1. Alexeyco
                13.05.2015 17:33

                > он отлично подходит для веба, лучше, чем остальные
                Что позволяет вам делать подобные заявления?

                Вот я могу парировать. Websockets — тоже, ведь, веб? Постоянные соединения — тоже веб? А можно мне пример того, как на чистом php сделать простой чатик на постоянных соединениях? Лучше других, говорите? Ну-ну.

                И вообще — какая разница, что есть сейчас — если перечитать мой комментарий (хотя бы просто перечитать), станет понятно, что я не о реалиях, а о тенденциях. Статистика — продажная беспринципная девка. Еще и заразная.


                1. pronskiy Автор
                  13.05.2015 17:42
                  +1

                  Websockets чатик на пхп делается не сложнее чем на любом другом языке socketo.me/demo


                  1. Alexeyco
                    13.05.2015 18:00
                    -1

                    socketo.me/docs/deploy

                    Не очень похоже на чистый PHP. Кому как, конечно, но вот я считаю, что технология — это что-то общепринятое. Если мы говорим о трюках, я сразу не засчитываю это за аргумент, я писал о чистом PHP.


                    1. pronskiy Автор
                      13.05.2015 19:30
                      +2

                      На странице все более чем общепринятые практики.
                      Написано, что будет работать на чистом PHP, но если хотите улучшить производительность, то можете установить дополнительные расширения.
                      Но даже на стандартном наборе этот сервер будет держать десятки тысяч соединений без проблем.


                1. SamDark
                  14.05.2015 11:58
                  +1

                  Что позволяет вам делать подобные заявления?


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

                  Потому что именно на нём сделали Wordpress и у него были конкуренты под .NET и Java точно, но вот не взлетели из за гемора с развёртыванием и хостингом. То же про Drupal, Joomla и т.д.

                  Вебсокеты — не подавляющее большинство проектов. Я бы даже сказал, что довольно редко нужны. Ну и не вижу особых проблем с ними работать из PHP. Конечно, сразу всплывают требования к окружению, но они сходные и в случае Python или Ruby.


                  1. Alexeyco
                    15.05.2015 15:05

                    Желаемое за действительное, как я и говорил )))) и хоть обминусуйте меня — от этого PHP не станет лучше. Можете выместить на мне все свое недовольство, пожалуйста.

                    Заводится у любого хостера, да? Так… а почему тогда мои проекты на Symfony2 работают, мягко говоря, не везде? Аааа… ясно… версия PHP не та… понятно.


                    1. SamDark
                      15.05.2015 15:42

                      Мы сейчас про PHP или про Symfony? Symfony — довольно сложная штука и требования соответствуют. Wordpress, Drupal, Joomla и т.д. заводятся практически везде. Даже на устаревших версиях десятилетней давности.


                      1. Alexeyco
                        18.05.2015 15:21

                        Как только мы говорим о том, что в сообществе (сейчас меньше, с распространением composer и Symfony2, признаю, меньше) засилие говнокода и говнокодеров, нам приводят в пример Symfony2, когда мы начинаем ныть про производительность и обратную совместимость, нам под нос суют Drupal.

                        Не хочу я Drupal. SQL-запросы (не знаю, норма это или не очень) в шаблонах я уже видел. Больше не хочу.

                        Расскажу притчу.
                        В одной электричке ехали три мудреца — Дэн и Сяо. Правда один был только будущим мудрецом (Дэн), а другой мудрец вообще хрен знает, как попал в эту электричку (Сяо). Третьего называть мудрецом не хочется (он слишком маленький для мудреца), но чтобы ему не было обидно, все-таки назовем. Его имя Пин.

                        Пин был «программистом», это было понятно. Поезд изгибался и пытался переехать с Балашихинской ветки на Горьковскую, а Пин в это время усиленно запускал Filezilla. «Правит прямо на сервере, значит там наверняка PHP»,- подумал Сяо, и стал протискиваться ближе. Подойдя на расстояние, с которого можно было рассмотреть содержимое открытого Notepad++, он увидел нагромождения HTML и SQL. «Точно PHP»,- подумал Сяо, замечая несколько колонок аккуратно собранных инклудов. Дэн тем временем судорожно правил что-то, попутно огребая по телефону.

                        Вдруг откуда-то раздался вопрос «простите, а вы где учились»? Милая дама (Сяо даже заинтересовался), обнимая маленького Пина, продолжала: «мой маленький Пин интересуется компьютерами, и тоже хочет стать компьютерщиком». Дискомфорт от поездки в переполненном душном вагоне, в котором, спасибо, что хоть летом не топят (в этот раз не топили) сменился ожиданием реакции Дэна. Сяо по себе знал, что чувствуешь, когда ты приходишь в гости, а тебе говорят «а чо у меня винда не грузится, ты ж программист, чо, э». Он ожидал реакции Дэна.

                        Но Дэн не повел и глазом. Тот наоборот выправился и с гордым видом объяснил стройной и молодой «Хоши Миновне», что он даже не начинающий программист. Но он одобряет интерес маленького Пина к компьютерам. Какой ВУЗ посоветовать, он не знает, но на работе ему когда-то доверили заниматься сайтом организации, и теперь он вообще хочет увольняться, и дальше стать программистом. Что, в общем-то, было бы разумно для человека, у которого так хорошо все получается.

                        Электричка ехала, в общем-то историю можно было бы закончить. Но вдруг какой-то голос прервал беседу стройной и молодой Хоши Миновны и Дэна.

                        — Простите, я вижу, что вы компьютерщик. Не подскажете, а почему у меня на моем маке стала так медленно грузиться эппловский виндус.

                        Повернувшись, все трое — стройная Хоши Миновна, Дэн и маленький Пин увидели Сяо.


                        1. Alexeyco
                          18.05.2015 15:36

                          Небольшая эррата.

                          > Пин был «программистом», это было понятно.
                          Дэн, конечно же… впрочем, кто знает, может и Пин уже тоже программист. Хотя Сяо больше интересует судьба Хоши Миновны.


                    1. SamDark
                      15.05.2015 15:44

                      Обминусовывать не буду :) Вы аргументируете и не перегибаете. Хороший спор :)


          1. Alexeyco
            13.05.2015 17:22

            А никто не пытался спросить у Хабра, Yahoo, Facebook (ха-ха, facebook, как же), Flickr, Digg, SourceForge, Вконтакте (ха-ха, вконтакте, как же) и так далее — на чем бы они стали делать свои сервисы, если бы стартовали сейчас? Я призывал и продолжу призывать к адекватности оценок, а не к подмене действительности. Я кодю на php, но стараюсь трезво смотреть на вещи. Я кодю на php «потому, что...», а не «для того, чтобы...». Разница есть?


            1. SamDark
              14.05.2015 12:05
              +1

              Знаю на тему Yahoo. Они бы так и использовали PHP для фронта. Также знаю проекты, где сайт (то есть CMS, всякие формы фидбека и т.д.) делается на PHP, а продукт на Java. Причём изначально делалось всё на Java и впоследствии сайт был переписан на PHP. Причины — не надо билдить, правки вносить быстрее, это может делать менее дорогой сотрудник, найти и заменить которого значительно легче.


            1. SamDark
              14.05.2015 12:06
              +1

              Ещё могу сказать про наш stay.com. Также делали бы на PHP, хотя отдельные части у нас бегают на go, а приложения, естественно, на Java и ObjectiveC.