Дайджест интересных новостей и материалов из мира PHP № 42 (1 — 16 июня 2014)



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

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


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




    PHP


    • RFC: Uniform Variable Syntax — Предложение от Никиты Попова, которое предполагает введение единого синтаксиса переменных и вызовов в PHP. Так, станут возможными недоступные на данный момент конструкции: $foo()['bar'](); $foo::$bar::$baz; foo()(); $foo->bar()(), а также операции с любыми выражениями в скобках, например (function() { ... })() и прочие.
    • RFC: Bare Name Array Literal — Предлагается сделать кавычки необязательными в объявлении ключей и значений массивов по аналогии с объявлением объектов в JavaScript.
    • RFC: Bare Name Array Dereference — В продолжение к предыдущему, в данном предложении автор желает сократить синтаксис обращения к элементам вложенного массива, и вместо $myArray['foobar']['andSoOn']['moreKeys'] использовать что-то подобное $myArray:>foobar:>andSoOn:>moreKeys.


    Инструменты


    • Buzz — Легковесный HTTP-клиент.
    • Snoop — Библиотека позволяет находить информацию о пользователе (соц. профили, изображения и т. п.) по его имейлу. Используется Rapportive API.
    • Stapler — Библиотека для аплоада файлов на PHP и связкой с ORM. Автор вдохновлялся Ruby-инструментом Paperclip.
    • JSON Lint — Полезная библиотека от создателя Composer.
    • PHPloy — Инструмент для обновления серверов по FTP.
    • Swap — Библиотека позволяет получать курсы валют от различных провайдеров.
    • LanguageDetector — Позволяет установить язык по строке.
    • Certificationy — Консольное приложение для подготовки к сертификации по Symfony.


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




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






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

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

      +17
      Array dereferencing через :> ужасен. Очень надеюсь, что так не сделают.
        –4
        У нас на работе подумали также, и подумали что $arr:some:arr:''key with space'' было бы хорошо.
          +3
          Имхо, из-за синтаксиса конкатенации через точку, лучше вообще не пытаться «родить сахарок», а оставить уж как есть. Есть в языке задачки поважнее.
            0
            Конкатенация через точку это мегафейл…

            Вообще интересно сделали в Scala, отказавшись от ++ как инкремента и сделав его конкатенацией коллекций. Ни что не мешало PHP поступить так же добавить конструкцию вида T_STRING ++ T_STRING.

            Жаль что этого не произойдет ни когда, по соображениям огромной несовместимости :(
              0
              Выкинуть оператор (поменять его поведение) не выйдет, сами понимаете. Так-то конкатенацию, как отдельный оператор, можно и через ".." (lua) и через "~" (jinja, twig) сделать. Но это уже будет очередной левый форк языка (
              • НЛО прилетело и опубликовало эту надпись здесь
              0
              Кстати, синтаксис через: может конфликтовать (по крайней мере в голове разработчика) с тернарным оператором. Последний и так в php сделан «не как у людей», а если его смешать в одной конструкции с такой индексацией…

              Вариант выкинуть кавычки, оставив только скобки, в свою очередь конфликтует с неявным созданием констант на лету при их использовании.

              В общем, лучше бы не трогали :)
                +1
                Э… А что в тернарном операторе PHP «не как у людей»? Я никакой разницы с теми же Си и Java не замечал.
                  0
                  Используйте в одном выражении хотя бы два тернарных без круглых скобок. Порядок выбора веток не типичен. Вроде даже пост был как-то на Хабре по этому поводу.
                    0
                    А, понял. Приоритет тернарных операторов в общем случае не стандартизирован, так что при их вложении я использую скобки в любом языке.

                    Кроме того, вложенные тернарные операторы — это уже повод задуматься о структуре кода. В моей практике такое бывает только в редких постыдных случаях торопливых костылей :) Это же чистый write-only код. Его потом читать замучаешься.
                      0
                      Двойной тернарный оп я у себя допускаю у ветвлений, если вся конструкция влезает в одну строку (80-120 символов). Возможно с вынесением подвыражений.
                      Но речь-то не о порядке, а комбинировании тернарных оп с вариантом индексации через все тот же ":". Имхо будет полный фарш. Лучше б уж как с объектами сделали, если руки у них чешутся что-нить добавить.
              +1
              Всегда спокойно относился к различным предложением, но это тоже вызвало бурное негодование.
              –1
              Хороший выпуск. Особенно порадовали новые RFC. Особенно предложенный новый синтаксис для массивов.
                +1
                Спасибо за ваш труд в очередной раз ) Кстати, по прототипам я когда-то давно тоже делал библиотечку с трейтами: Prototype
                  +2
                  Предложения с кавычками и новым синатксисом для массивов плохие.

                  Если отменить обязательные кавычки в объявлении ключей и значений массивов, то как там отличить строку от константы?

                  Еще один синтаксис для массиов мало того выглядит не очень (но это вкусовщина), так он еще и менее гибкий — как задать ключ массива перемнной?
                  $myArray:>$foobar:>$andSoOn:>moreKeys
                  Не будет ли такой же путаницы с константами?
                  А как задать числом или выражением?
                  $myArray:>($i+$j)
                  Ерунда какая-то, синтаксический сахар ради синтаксического сахара, причем еще и совсем не похожий на синтаксис других ЯП.
                    0
                    Согласен, будет выглядеть чужеродно, чем им скобочки [] не угодили? :)
                      +1
                      Если отменить обязательные кавычки в объявлении ключей и значений массивов, то как там отличить строку от константы?

                      Сначала проверять существование константы и если её нет использовать строку (собственно оно сейчас так и работает, только еще нотис выбрасывает).
                        +1
                        Да, и это на мой взгляд проблема, от которой надо избавляться (от E_STRICT до deprecated), а не развивать дальше бардак.

                        Синтаксическая конструкция должна означать всегда одно и тоже, и не зависеть от хода выполнения скрипта. На всяк случай: я имею ввиду именно семантическое значение синтаксической конструкции, а не значение результата ее интерпретации.

                      +1
                      Для деплоя по ftp есть еще неплохая утилита github.com/dg/ftp-deployment
                        0
                        NikiC совсем заигрался. Всякий раз, когда я буду видеть вызов вида foo()() — я буду от всей души желать написавшему это гореть в аду.

                        Прелесть РНР всегда была в читабельности кода — читать код было почти так же легко, как и писать. То есть, поклонники стиля «фигак-фигак — и на продакшен» не могли сильно поднагадить тем, кто будет после них отлаживать код. Но в последние годы сообщество серьёзно работает над тем, чтобы окончательно похоронить читабельность.

                        а этого Andrea Faulds я затопчут свои же, я надеюсь
                          +1
                          foo()()

                          Тут наоборот радоваться надо что PHP становится нормальным (подобные конструкции везде работают), и если кому-то и желать гореть в аду то только тому криворукому программисту который изначально не смог это реализовать.
                            0
                            Я ничего удивительного в этом не вижу. Write-only языки и подходы шагают по планете.
                            Ширпотреб вытесняет вещь. Машина делается со сроком службы три года, гаджет — полгода. Почему программа должна работать дольше? Написал шустренько — и в продакшен. А если что-то сломалось, то проще новую написать, чем со старой разбираться.
                          0
                          ИМХО лучше бы дали доступ к ключам массива через стрелочку ->, раз уж нельзя точку использовать.

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

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