Дайджест интересных новостей и материалов из мира PHP за последние две недели №23 (29.07.2013 — 11.08.2013)



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

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


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


    • Вышел в свет WordPress 3.6 — Свежий релиз под кодовым названием «Oscar» включает в себя новую тему, улучшенный механизм ревизий постов, блокирование и автосохранение постов, улучшенный редактор меню и многое другое. Полный список изменений тут.
      Также были анонсированы изменения в процессах разработки и развертывания проекта WordPress.
    • Phalcon 2.0 — будущее — Команда разработчиков, в связи с быстрым ростом популярности фреймворка, предвидит возможные трудности. В будущем своевременная поддержка и реализация новых возможностей может стать проблемой, а помощь сторонних контрибьюторов ограничена ввиду сложности языка C, на котором написан фреймворк. Именно поэтому было решено разработать свой собственный язык, нечто среднее между PHP и С.
      Встречайте Zephir! Язык поддерживает как статическую так и динамическую типизацию, весь код должен быть в классах, использование неймспейсов обязательно, знак $ в имени переменных не нужен. Подробнее читайте в посте по ссылке. Также можно взглянуть на код реализации компонента маршрутизации на Zephir.
      Кстати, если вы еще не щупали Phalcon, но хотите попробовать, то это очень легко сделать. Просто установите VirtualBox, Vagrant и клонируйте репозиторий Vagrant-Phalcon, а затем запустите Vagrant.
    • В core-команде PHP появился full-time разработчик — Хорошая новость, будем надеятся это скажется на процессе разработки самым положительным образом.
    • Вышла версия 0.4.0 фреймворка Go! AOP — Обновилась замечательная библиотека, реализующая концепцию аспектно-ориентированного программирования в PHP. Среди нововведений, например, возможность перехватывать системные функции вроде fopen, array_keys и любые другие.
    • Не волнуйтесь по поводу BREACH — На прошедшей совсем недавно конференции Black Hat была обнародована информация о новом виде атак — BREACH. Это породило целую волну постов и обсуждений. По ссылке пост от Anthony Ferrara, в котором описана суть проблемы и способы защиты. Также автор призывает не паниковать и сфокусироваться на защите от XSS и SQL-инъекций — гораздо более вероятных путях взлома.
    • Состоялся релиз phpDocumentor 2.0.0 (и сразу 2.0.1) — Обновился самый популярный инструмент автоматической генерации документации для PHP.


    PHP




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




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

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

      +2
      Встречайте Zephir! Язык поддерживает как статическую так и динамическую типизацию, весь код должен быть в классах, использование неймспейсов обязательно, знак $ в имени переменных не нужен.
      И далее по ссылке

      Даже не знаю, стоит ли… ведь есть же тот же самый Go… Может ли только динамическая типизация стать поводом к использованию Зефира. Да и тестов производительности не хватает.
        +9
        помощь сторонних контрибьюторов ограничена ввиду сложности языка C, на котором написан фреймворк. Именно поэтому было решено разработать свой собственный язык, нечто среднее между PHP и С


        Мда. А контрибьютеров на языке, который нигде больше не используется, кроме как в этом фреймворке будет больше? Весьма странное решение, PHP программисту лучше выучить С и получить глубокие знания, чем выучить Zephyr, который, по большому счёту, никому не нужен. В итоге получаем подобие vendor-lock'a, что не есть хорошо. А ограниченное количество документации (по сравнению с тем же С) лишь увеличивает порог вхождения, как бы похож на PHP он не был.
          +2
          Мне кажется никто не заставляет писать на Zephyr, можете на С — пишите на С
            +1
            Это все понятно. Просто хотелось бы понять, на что рассчитывают авторы Зефира.
              +3
              Команда разработчиков, в связи с быстрым ростом популярности фреймворка, предвидит возможные трудности.

              Создав «еще один язык», они сильно снизят популярность своего детища. Ну и судя по их логике «предотвратят трудности».
              На выходе будет очень узкое, редко используемое — никому не нужное нечто.
                +1
                Ну погодите еще. У ребят неплохо получилось с Фалконом, давайте дадим им шанс…
              +3
              Тоесть теперь контрибьюторы нужны и для того, чтобы поддерживать ядро на С, и для того, чтобы обслуживать развитие языка? Ну да, сразу «упростили», в два раза.
              0
              Так же подумал. Но посмотрев на код, который понятен без доков, и на цели Zephir — уже не так скептичен. Думаю это более интересная альтернатива hiphop и т.д.
              0
              Ну для начала в Go нет OOP. Да и цели у Go и Zephir весьма разные. На мой взгляд сравнение неуместно.
                +2
                Согласен.
                Go решает конкретные задачи системных и не очень программистов.
                Зефир же будет погребен скорее всего еще раньше чем доберется до беты.
                  0
                  Как я понял из описания Zephir, это модуль для PHP, построенный на Zend движке, с целью упростить написание модулей для PHP. Например Phalcon, ну или создать свой модуль с целью ускорить нагруженный участок PHP кода.

                  Куда, в этом описании, вы хотите вставить Go?

                  Предвидя ответ в виде, «Заменить PHP на Go», отвечу что был бы за, но в большинстве случаев это не возможно.
                    0
                    Я не еавангелист го. Есть задачи в моей работе для php, есть для node.js, есть для го. Фалкон я с самого начала не понял, теперь еще и зефир какой-то.
                    Вы пытаетесь приписать моему комменту то, чего он не содержит :)
                      0
                      Извините, ответ был в ветке Zephir vs Go, вот и изтрактовал неверно.
                      +1
                      Может и я выразился не очень доходчиво. Скорее мои слова надо понимать так: когда стартуете новый проект, надо тысячу раз подумать, как и на чем его писать. Я тепло отношусь к PHP, постоянно имею с ним дело, но использовать костыли типа HipHop или его аналогов я не горю желанием. Куда как лучше, если есть такая возможность, выбрать что-то с меньшим количеством костылей. Ну вот, к примеру, Go. Я не сталкивался пока ни с Фалконом, ни с HipHop, но как показывает опыт, чем меньше потенциально подверженных сбоям мест в той или иной системе, тем лучше.

                      В качестве флуда. Эх, вот есть же живой пример — NodeJS. Из ничего сделали довольно сносную платформу. Были и есть сложности и проблемы, но они преодолеваются, и это реально видно. Неужели такая компания, как Zend, не может позволить себе сотворить что-то подобное! Причесать нестыковки в синтаксисе, упростить работу с модулями… сделать PHP асинхронным. Интересно, будет ли когда-нибудь такое…
                        0
                        Банальный пример: уже есть проект на PHP, не маленький. Кусок кода где парсится стринговый ответ работает медленно.

                        Варианты решения:
                        1. Переписать проект на Go/Scala/C/C++
                        2. Переписать проект под HipHop, kPHP
                        3. Вынести тормозящий кусок кода на Go/Scala/C/C++, запустить как daemon и общаться с ним по сокетам
                        4. Написать на C PHP extension.
                        5. Написать на Zephir PHP extension.
                        6. предложите своё решение!?

                        Что выберете?

                        Мы, ввиду невозможности первого варианта, сейчас решаем с помощью 3 и 4. Чаще 3, ибо 4 никто не хочет заниматься. И вариант с Zephir, отнюдь, не плохо бы смотрелся вместо 3 и 4.
                          0
                          Ну я же несколько раз отметил — условие, что проект еще не работающий
                    0
                    Есть ли в Go ООП или его там нет, во-первых, спорный вопрос, но даже если и нет — то можно воспринимать это как особенность языка. Это и статическую типизацию.

                    Во-вторых, о целях. Цели у Зефира простые — на PHP писать медленно, а на C сложно. Вот они и выдумали Зефир. Go же (лично мое мнение) выглядит чуть проще, чем C. При этом, не поймите меня не правильно — я смотрю на это не со скепсисом, а с интересом. Кто его знает — может быть и взлетит.
                  +3
                  Чувствуется, пойдет теперь мода на интерпретацию / компиляцию PHP. В виде фреймворков, серверов, расширений и всего прочего.
                    0
                    RFC: Constructor argument promotion — Предложение от одного из разработчиков HipHop VM из Facebook, суть которого довольно проста: предлагается для аргументов, передаваемых в конструктор класса, автоматически создавать соответствующие свойства класса и присваивать им переданные значения.

                    Бредовое предложение :(
                      0
                      Похоже на Register Globals 2.0
                        +1
                        Не поддерживаю Ваш скептицизм, посмотрите на Scala — синтаксис языка на порядок выше PHP, там как раз присутствует этот сахар. Вот тут пример класов и конструкторов в Scala.
                          +1
                          Лично мне не по душе неявные присвоения. Сахар для присвоения аргументов конструктора свойствам — хорошая штука, но лучше, чтобы это было результатом явного вызова, например, как в C++:

                          class Foo 
                          {
                              public:
                                  Foo(int bar) : _bar(bar) {
                                  }
                              private:
                                  _bar:int;
                          }
                          

                            +1
                            Поддерживаю. Меньше магии = лучше.
                            –1
                            Проблемы возникают когда выяснятся что передаваемые в конструктор объекты нужны только для создания экземпляра — зачем тратить ресурсы на хранение этих бесполезных объектов? Как задать область видимости этих свойств? и т.д.

                            Впрочем, смысла обсуждать, ИМХО, нет, т.к. реализация этого RFC полностью ломает обратную совместимость => реализован он не будет.
                              0
                              Вы рфц точно читали? видимость задается, обратная совместимость не ломается
                                0
                                Честно говоря нет, т.к. идея все равно бредовая, но сейчас прочитал, поэтолу

                                видимость задается

                                Соглашусь.

                                обратная совместимость не ломается

                                Не соглашусь, см например пример в п6, и вопросы:

                                1) Что будет если это магическое свойство? (я так понимаю всё сломается? т.к. будет добавлено обычное поле класса, которое перекроет магической свойство)
                                2) Что будет если это свойство есть в трайте? (похоже фатальная ошибка о невозможности переопределить свойства класса свойством из трайта?)
                                  +1
                                  Впрочем, если в коде ниже свойство $model будет локальным, то проблем действительно быть не должно.

                                  class Car { public function __construct(public $make, protected $doors, $model = 'unknown') { } }

                                  М… возможно, не всё так бредово как казалось…
                                0
                                Конструкторы должны инициализировать объект, и не должны содержать логику. В Вашем примере, возможно, нужно использовать Build патерн.
                                  –3
                                  Выносить логику в отдельный метод только ради того чтобы очистить конструктор от пары if-ов это ООП ради ООП.
                            0
                            Ещё вышел Yii 1.1.14: habrahabr.ru/post/189820/
                              +1
                              Да да, но чуть позже чем публиковался дайджест, поэтому еще включу в следующий выпуск

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

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