Дайджест интересных новостей и материалов из мира PHP № 48 (7 – 21 сентября 2014)



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

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


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


    • habr Новый PhpStorm 8: развиваемся вместе. — Поддержка Blade, Behat, WordPress, удаленных PHP-интерпретаторов, мультивыделение и многое другое.
    • Laravel убрали Issues на GitHub — Отныне в репозиторий принимаются только pull-реквесты, но не баг-репорты. Вместе с этим группа разработчиков фреймворка представила специальный инструмент Liferaft, который автоматизирует рутинные операции необходимые для создания правильных баг репортов.
    • Обновления актуальных веток PHP 5.4.33 и 5.5.17


    PHP


    • RFC: Null Coalesce Operator — Раннее внесенное предложение о неявном вызове isset в тернарном операторе трансформировалось в предложение ввести новый оператор ??, который будет возвращать первый операнд, если он существует и не NULL, иначе второй: $_GET['mykey'] ?? ""; Голосование уже стартовало.
    • RFC: loop + or control structure — Предложение добавить блок or для всех существующих конструкций циклов в PHP, который бы выполнялся в случае, если условие цикла ложно уже на первой итерации.
    • RFC: Fix list() behavior inconsistency — Предложение исправить поведение list() при использовании со строками.
    • RFC: Remove alternative PHP tags — Предлагается убрать поддержку тегов <% и <script language=php>.
    • RFC: Switch default multiple — Предложение запретить использование нескольких блоков default в конструкции switch принято единогласно.


    Инструменты


    • PHP-Parser 1.0.0 — Первый стабильный релиз парсера PHP на PHP. Поддерживаются версии >=5.3 включая 5.6.
    • Rocketeer 2.0 — Качественный инструмент запуска задач и развертывания обновился до второй версии.
    • HTTP Mock — Как ясно из названия, позволяет мокать HTTP-запросы в ваших тестах.
    • Minime\Annotations — Простая работа с аннотациями.
    • ClassPreloader — Инструмент позволяет оптимизировать автозагрузку путем генерации одного файла со всеми классами.
    • PHP Cron Expression Parser — Позволяет парсить CRON-выражения, определять дату последнего и следующего запуска.
    • Recoil — Многозадачность с помощью корутин — ядро React, реализующее асинхронность на основе генераторов.
    • PHP Shell Framework — Фреймворк для создания консольных приложений.
    • Shell php module — Расширение, написанное на Zephir, и так же предназначенное для создания консольных программ.
    • Requests — Простая и удобная библиотека для выполнения HTTP-запросов.
    • humhub — Гибкая социальная сеть на Yii 1.
    • epilog — Раскрашиваем логи в консоли.
    • Geocoder — Незаменимая библиотека при создании приложений, обрабатывающих гео-данные.


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




    Аудио и видеоматериалы




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




    Быстрый поиск по всем дайджестам
    Предыдущий выпуск
    Zfort Group
    112,00
    Компания
    Поделиться публикацией

    Комментарии 25

      0
      Получается, что изобрели JSовский оператор || и назвали его Null Coalesce Operator.
        +1
        Причем тут оператор ||? Просто в JS. можно обращаться к несуществующим элементам массива/обьекта получая в результате undefined коротрый кастится к false а в PHP получится warning и вернет null поэтому в теории || должен аналагично работать и в PHP.
          +4
          В PHP expr1 || expr2 возвращает булево значение. В JS expr1 || expr2 возвращает значение первого выражения если оно может быть преобразовано к true, иначе значение второго выражения. Т.е. выражение 5 || 7 в PHP вернёт true, а в JS5.

          Но когда реализуют, станет возможно писать так в PHP 5 ?? 7 и получать 5, а не true.

          developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Logical_Operators
            +2
            Это ?: и он уже давно есть
              0
              $data = [];
              isset($data['foo']) ? $data['foo'] : 'bar'; // нету варингов
              $data['foo'] ? : 'bar'; // Варнинг, если error reporting level позволяет
              $data['foo'] ?? 'bar'; // 'bar'
              

                0
                Если прочитать то сообщение, на которое я ответил, то там говорилось именно об ?: выражении. ?? — это абсолютно то же самое, только оно также сделает isset проверку для первого (но не второго, в отличии от жс) аргумента.
                  +1
                  Там говорилось о разнице между || и ?: как раз таки и в частности разница в том, как js ведет себя в случае отсутствия запрашиваемого свойства. В этом собственно и отличие, и именно по этому ?: не может заменить ||. А вот ?? — полный аналог в контексте PHP.
                    0
                    Это свойство не жс-ного ||, а того, что в жс можно обращаться к несуществующим свойствам объектов/элементам массива и не получать ошибку
                +1
                Так понятнее?

                  // было
                  isset($_GET['mykey']) ? $_GET['mykey'] : '';
                
                  // стало
                  $_GET['mykey'] ?? '';
                


                P.S. Опоздал.
                0
                Да, вы определённо правы. Как-то только сейчас до меня дошло это.
            0
            Жаль я показал свое невежество. В действительности Null Coalesce Operator придумали не разработчики PHP.

            Кстати, как указанно по ссылке выше, в JS это не совсем Null coalesing operator (если кто-нибудь переведёт на русский, то я буду благодарен), потому что там идёт проверка не на null, а на false. Собственно в PHP будет также.

            И ещё одно. PHP многие осуждают за то, что ассоциативность тернарного оператора не такая как у всех. Зато как гармонично из него получилось вот такое «или».
            +6
            Добавлю немного от себя: Официально запущен перевод документации PHP на Украинский язык. Ребята уже проделали огромную работу.
              +2
              Мне одному не понятно зачем? Перевести немного документации, отвечающей за основы типа циклов и условий — да. Для остального — есть оригинал на английском. Просто потом получаются быдлокодеры совершенно не знающие английского, и пишущие код типа "$schet = $klient * dengi;".
                +9
                PHP всегда был языком с низким порогом входа. Все мы с вами были когда-то быдлокодерами, все с чего-то начинали. Именно доступность документации на родном языке, позволит какому-нибудь 13 летнему школьнику, не знающему английский, создать свою быдлостраничку в интеренете, а к 25 годам обеспечивать всю семью и быть сеньйором помидором в крупной компании. И никак не помешает ему выучить английский язык и использовать документацию в оригинале. Или вы никогда не писали $d и $f вместо $dir и $file_name? Не ставили собачку, чтобы не было нотиса? Сразу писали идеальный код?
                И не путайте PHP с 1C, в документации нет примеров с таким бредом как "$schet = $klient * dengi;", переменные там названы как надо, а на русском только комментарии и сама документация.
                  0
                  Те кто начинает совсем-совсем с нуля скорее начнут с каких-нибудь туториалов, либо книжек, их написано предостаточно на разных языках.
                    –1
                    > на русском только комментарии и сама документация

                    так на русском или на украинском?
                      0
                      А еще как минимум: Brazilian Portuguese, Chinese, French, German, Italian, Japanese, Romanian, Spanish, Turkish
                      +1
                      Соглашусь с vlreshet. Мы с вами просто в другое время росли, когда на английский так не налегали. Сейчас уже во многих садиках есть курсы английского, с 1-2 класса школы идет активное изучение, а к 2020 иностранный язык может стать обязательным в ЕГЭ. У меня ребенок в 2.5 года знает английский алфавит и цифры, несколько десятков слов, хотя специально мы с ним не занимались.
                        +2
                        Вы будете удивлены, но я никогда не писал "$d и $f вместо $dir и $file_name", а собачкой не пользовался вообще ни разу. Честно. Кривые названия переменных я постарался перерасти ещё в паскале, а вторым моим языком стала Java, и тогда я решил что если язык серъёзный то надо и код стайлу перед ним поучиться. А потом у меня был хороший учитель PHP, и он сразу объяснил что названия должны нести смысл. Я не хвастаю, я просто не считаю что абсолютно все по-началу ужасно быдлокодят на PHP.
                          0
                          Я полагаю Irker говорит о том случае, когда PHP первый изучаемый язык программирования. Было бы странно, я считаю, изучать последовательно разные языки и поначалу в каждом быдлокодить. Как правило, только первый блин комом, а далее уже проще и понятнее.
                            0
                            Или кажется, что проще и понятней, а на самом деле языки с противоположными парадигмами и идеологиями.
                        +3
                        Мне одному не понятно зачем? Перевести немного документации, отвечающей за основы типа циклов и условий — да. Для остального — есть оригинал на английском. Просто потом получаются быдлокодеры совершенно не знающие английского, и пишущие код типа "$schet = $klient * dengi;".

                        Скажу честно — английский знаю отлично, но доки, тот же php.net, если есть такая возможность, читаю на русском. Мне капельку удобнее, ну и на качество кода это никак не влияет.
                        По-моему на качество кода, в основном, влияет понимание материала, а не язык на котором ты его читал. И если люди на родном языке понимают документацию немного лучше — код будет немного правильнее ;)
                      0
                      А как в phpmetrics оценивают Maintenability Index? Что-то в моих проектах он маленький, хотя удобство поддержки «много лет спустя» стоит буквально на первом месте среди прочих критериев разработки.
                        +1
                        Изучение кодовой базы — Несколько советов о том, как знакомиться с новым кодом.


                        Мой перевод: Советы как изучать исходный код незнакомого продукта. На хабре опубликовать не могу.

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

                        Самое читаемое