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



    Новогодние праздники подходят к финишу, и мы снова в строю со свежей порцией новостей и материалов из мира PHP.

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


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


    • Принят PSR-3 — Принят стандарт, регламентирующий единый интерфейс представления логов для PHP приложений. Немного личных мыслей и критики на тему.
    • Yii 1.1.13 — Прямо под Новый год свет увидела свежая версия фреймворка. Кардинальных изменений релиз не принес, но, тем не менее, список изменений насчитывает около 70 улучшений и более 50 исправлений. Полный список можно посмотреть здесь.
    • 10й выпуск журнала Web & PHP — В выпуске раскрыты следующие темы: 5 смертельных грехов программиста; Индексирования в базах данных; 10 фактов о социальных медиа для бизнеса; и другие.
    • Codeception 1.5 — Мажорный релиз отличного инструмента для тестирования, который включает в себя несколько интересных возможностей. Одна из которых — генерация отчетов о покрытии кода. Кроме того новые Redis и MongoDb модули, улучшения UX и множество исправленных ошибок.
    • Symfony 2.2 Beta 1 — Также в свет вышла первая бета Symfony под версией 2.2. Выпуск беты ознаменовывает конец фазы разработки, то есть новых возможностей добавлено не будет за исключением поддержки PSR-3 и добавления нескольких еще несмерженных пул-реквестов. Финальный релиз следует ожидать к концу февраля. Подробнее о новых возможностях можно почитать тут, тут и тут.


    PHP


    • Избавляемся от дублирования сквозного кода в PHP: рефакторинг кода с АОП — Отличнейший хабрапост, в котором автор рассматривает проблемы дублирования сквозного кода. Приводит классические пути решения этих проблем в ООП стиле, указывая при этом на плюсы и минусы каждого подхода. После чего приводятся подробные примеры решения типичных задач (логирования и кэширования) путем рефакторинга кода в аспектном стиле с использованием библиотеки Go! AOP.
    • Мультизадачность на PHP — Видеозапись отличной презентации, в которой раскрыта тема мультизадачности в PHP для решения типичных задач, как, например, пакетная обработка данных или создание демонов. Автор говорит о базовых понятиях мультизадачных систем: сравнивает процессы и потоки, форкинг, состоянии гонки, семафорах и мьютексах.
    • 2012: Год на PHP — В прошлом выпуске мы делали обзор самых значимых событий в мире PHP за 2012 год. Подобный обзор сделал и автор поста, кроме событий выделив также направления развития, обозначившиеся за год. Также автор делает предположения, касающиеся уже текущего 2013 года, предсказывая улучшение в области DiC и более активному использованию BDD c помощью PHPSpec и Behat. Также небольшое обсуждение с интересными предположениями на 2013 год для PHP доступно на reddit.
    • PHP приложения и PaaS — В посте автор коротко рассматривает три основных, по его мнению, провайдера на рынке PaaS решения для PHP, а именно Engine Yard/Orchestra, PagodaBox и AppFog. Последний заинтересовал автора больше остальных, и он подробнее рассказал о процессе регистрации, создании и конфигурировании приложения на нем.

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


    • Создаем поисковый движок на PHP — Хороший пост из 5 частей о создании собственного поисковика на чистом PHP. Исходный код результата доступен на GitHub.
    • Мой первый скрипт по разгадыванию капчи — В промежутках между обеденными перерывами Почта России строит козни честным разработчикам в виде дополнительных средств защиты. В посте автор рассказывает о личном опыте распознавания капчи на PHP.
    • Что нового в Laravel 4 — Вопрос о том, когда же выйдет версия 4, наверное, один из самых часто задаваемых вопросов по Laravel. И, к сожалению, конкретного ответа на данный момент нет — выйдет, когда будет готов. В текущем виде стадию, в которой находится фреймворк можно охарактеризовать как что-то между пре-бета и бета. Но пощупать готовящийся релиз можно уже сейчас. А в посте автор рассказывает о некоторых новых возможностях и улучшениях Laravel 4.
    • Почему некоторые PHP разработчики любят статические API? — Существует 10 типов разработчиков: те, кто безумно любят статические методы, потому что они просты в использовании, и те, кто считает, что их придумал сам дьявол, чтобы испытать преданность правильному программированию. В статье автор делится своим опытом и объясняет, почему некоторые разработчики игнорируют лучшие практики и используют слишком много статических методов.
    • Программирование с Anthony — Внедрение зависимости — Продолжение серии обучающих видео от маэстро Anthony Ferrara. На этот раз речь пойдет о Dependency Injection. Вся серия доступна тут.
    • Используем SSH и SFTP на PHP — Подробный туториал о работе с SSH и SFTP в PHP приложениях с использованием библиотеки ssh2. Примеры прилагаются.
    • Composer и версии — Небольшой пост об использовании великолепного инструмента для управления зависимостями на PHP, в котором автор дает рекомендации о правильном указании версий и веток.
    • Вам нужны тесты… только пока рано — В посте автор размышляет на тему необходимости тестирования кода. И если вы все еще работаете над реализацией деталей и выясняете можно ли получить желаемый результат, то, возможно, тестировать пока нет необходимости, что, впрочем, очевидно.
    • Мысли о структуре директорий — В своей заметке автор говорит о том, что стандартная структура директорий в ZF2, которую можно всюду наблюдать, это всего лишь рекомендация. Не стоит идти на поводу такого подхода, если очевидно, что другая структура для вашей задачи подойдет лучше. Автор приводит пример и рекомендации по изменению структуры директорий.
    • Кэширование сущностей Doctrine с помощью Couchbase — Подробный туториал, в котором автор, собственно, показывает, как использовать Couchbase в качестве кэша для сущностей Doctrine.
    • Используем несколько PDO соединений с базой в Symfony2 через DIC — «Небольшая заметка, в которой автор сначала демонстрирует привычный способ конфигурации нескольких соединений с базой в файле „parameters.yml“. После этого автор демонстрирует более продвинутый подход, конфигурируя соединения в отдельном файле и создав класс Db, который позволяет получать полностью сконфигурированные и готовые к использованию PDO объекты из контейнера.
    • 13 вещей, которые пользователи ненавидят в документации вашего проекта с открытым кодом — Почти у каждого программиста есть код, которым он хотел бы поделиться или уже делится с сообществом. Однако то, насколько этот код будет полезен другим разработчикам, во многом зависит от качества документации. В статье собраны ошибки, которые наиболее часто допускают разработчики при документировании собственных трудов.
    • Почему FastCGI с Nginx настолько быстрее Apache с mod_php? — В своем посте автор делает несколько тестов на „hello world“ приложении и пытается понять, почему Nginx быстрее Apache. Его исследование показало, что значительный удар по производительности Apache наносит обработка файлов .htaccess, а ее отключение (AllowOverride None) меняет ситуацию и Apache обгоняет Nginx.
    • Клон Twitter на PHP, 2 — Пара туториалов, в которых подробно описано создание полноценного клона Twitter с нуля. Демо и полный код также имеются.
    • Дело было вечером, echo «было нечего» — В предыдущих выпусках дайджеста были ссылки на эксперименты, в которых авторы пишут PHP скрипт без использования числовых и буквенных символов. На этот раз имеем хабрапост с продолжением экспериментов и описанием PHP функции без использования символов a-zA-Z0-9<>?.


    Ссылка на предыдущий выпуск.
    Материал подготовили dbritan, nesttor и pronskiy

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

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

      +17
      Блин, где вы этих слонов берете постоянно?!
      • НЛО прилетело и опубликовало эту надпись здесь
          +2
          Соглашусь в том плане, что есть более важные вещи требующие стандарта. А они эти логгеры где-то полгода мучали, может даже больше, не помню. И да, у нас внезапно появился аж один логгер соответствующий стандарту ) Хз насколько реально, но пусть бы они разработали стандарт кросс-фреймворкового middleware. Понимаю, логгер может быть первым шагом на пути к этому, но тогда было бы неплохо принимать весь этот стандарт в комплексе. Чтобы мы видели замчем это всё надо и почему стоит под него подстраиваться.
            +1
            А мне они все кажутся спорными из-за пробелов (в смысле, таких — " "). Я не хочу сейчас разжигать, просто констатирую факт — мне это не нравится (как и многим другим). Неужели во втором десятилетии 21-го века это является проблемой?

            Ну, стандарт есть стандарт (не важно, кто его принял, важно кто его поддерживает), потому я перешел с табов на пробелы. Пока радости не испытываю.

            А есть альтернативная версия стандарта? Вот 1в1, но с табами? :)
              +1
              Можете выжимку конкретики сюда кинуть?

              * Типа чё за выскочка — какой из фреймворков, какие минусы этого «стандарта». Я например уже ужасаюсь фразе «заместо табов пробелы».
              * С какого из языков можно тупо скопипастить такой стандарт? У явистов это есть?
                0
                У нас (явистов) есть log4J2 от apache
                  0
                  log4J2 ??

                  У log4J же более-менее устоявшийся интерфейс — чё бы его не взять и не изобретать лисипеды.

                  Btw, можете глянуть github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md?

                  На сколько дико он отличается в худшую сторону от log4j`я?
                    0
                    Не особо дико. Хотя это же всего интерфейс.
                    Тут надо смотреть на конечную реализацию.

                    PSR-3 вообще мне напомнил уровни syslog'a (скорее всего оттуда ноги растут)

                      0
                      Сисадминам намного приятнее работать с логами, которые прямо можно интерпретировать в syslog. Учитывая, что подавляющее большинство серверов с PHP крутится на Linux мне кажется это разумным решением.
                0
                Ухты у меня почти соотвествует система PSR-3 =)
                  0
                  В принятии стандарта участвовали 26 проектов, среди них PEAR, Doctrine, Composer, Joomla, Drupal, CakePHP, Symfony, PyroCMS, phpDocumentor, Zend Framework. Это не «внутри довольно узкой группы людей».
                    +2
                    Не 26 проектов, а 26 человек из разных проектов. Плюс к тому же я бы не стал доверять мнению многих их них. Например, что за PyroCMS? Эти люди собираются учить вас как писать код. Выглядит как просто попытка быть причастным к чему-то глобальному.
                      +2
                      PyroCMS это проект Phil Sturgeon, популярного блоггера и разработчика CodeIgniter. Кстати, его пост есть и в этом дайджесте. На самом деле, если оценивать этих 26 чекловек, то в первую, как мне кажется, очередь критерием является их публичность. Такая себе попытка создать сообщество лидеров PHP опен-сорс комьюнити. Пусть код некоторых проектов сам далеко не идеален (Друпал, Джумла, они тоже в списке, если чо), но эти люди собравшись вместе могут что-то изменить в опен-сорс мире за счет своего влияния. Но главное, не разработать стандарт, а внедрить его… Увы, это может занять годы.
                        0
                        26 человек это те, кто имеют право голоса. Из большинства проектов в обсуждении принимает участие не один человек. Более того, принимать участие в обсуждении и выдвигать свои предложения может любой человек, в том числе и Вы, например. И даже более того! Любой может запросить право голоса, отправив соответствующую заявку на рассмотрение.
                      +2
                      На самом деле, стандартизация полезна, но только тогда, когда участвуют в голосовании все, в том числе и сообщество. Потому что хочется иметь возможность менять компоненты в целой системе, сохраняя прежний функционал. И то, что сейчас происходит в PHP — давно пройденный путь в Java.
                      Даже названия похожие: JSR и PSR. Тут даже равенство напрашивается: PSR-3 = JSR-47 )
                        0
                        Увы, пока нету пока какого-то сообщества PHP. Есть сообщества друпалистов, симфонистов, зендистов, и т.п. И они представляют своих лидеров. Считай, что это непрямая демократия. Сообщество чистого РНР пока слишком слабо и аморфно.
                        +3
                        Зачем? Зачем нужны какие-то рамки в этом? Есть простенький логгер с тремя методами, есть крутой с десятком
                        Это все хорошо до той поры когда мы считаем что самый лучший код — это самописный, и в сотый раз изобретаем велосипед, нежели посмотреть к соседу на гитхабе и заюзать его решение, как делают все остальные во всех языках: руби, питон, ява.

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

                        Когда у тебя будет 5-6 разных логеров со своими заморочками мы либо придем к замечательному утверждению — чужой код гавно, я тут лучше свой напишу со своими велосипедами, либо все таки задумаемся о том, что стандартизация все таки необходима. Во второй вариант в мире php я вот верю слабо, слишком уж большое количество велосипедостроителей с интеллектом как у улитки. Поэтому и язык развивается со скоростью этой самой улитки.

                        Если интересно, можете почитать про нашу проблему habrahabr.ru/post/113145. Поучительная история про логирование
                          +1
                          В других языках используют готовые библиотеки для логирования, вместо изобретения велосипеда. Стандарт же предлагает обрывки логгера, разрешая расширить его своими методами (т.е. сделать «крутой логгер с десятком методов»). Что меняет этот стандарт?
                            0
                            От расширения ты никак не застрахуешься, оно в некоторых местах очень даже полезно и нужно. Какие базовые вещи должны быть в стандарте для логирования, да впринципе вот они:

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

                            API для работы с ним. Тут всякие интерфейсы типа Logger, LogLevel, Appender и прочие.

                            Описание как оно все должно управляться внутри. Опять же, по большей части я уверен это можно описать и в интерфейсах.

                            А реализация — ну тут уже либо она соответствует, либо нет.

                          +2
                          Какой-то перец захотел, чтобы у всех PHP-библиотек логгирования был одинаковый интерфейс.

                          Не какой-то перец, а какие-то перцы, и не у всех библиотек, а у разрабатываемых этими перцами. Отличное решение, на мой взгляд. Соглашусь только, что корректней было бы его назвать FIG-1 вместо PSR-3.

                          И да, раскажите, пожалуйста, слезливую историю о том, как после принятия стандарта PSR-3 (PHP Standard Recommendation) ваша свобода творчества была ограничена, и как вам диктовали какие методы должны быть в ваших классах.
                            0
                            И да, раскажите, пожалуйста, слезливую историю о том, как после принятия стандарта PSR-3 (PHP Standard Recommendation) ваша свобода творчества была ограничена, и как вам диктовали какие методы должны быть в ваших классах.

                            Ну как же, вон, в приведенной ссылке на «личные мысли и критику», чуть ли не первым пунктом идет критика названий методов. Ах да, еще и почему-то emergency не принимает Exception cause.
                              +1
                              Вы, по-моему, не улавливаете суть. Если вам не нравится psr-N, вы его не поддерживаете в своей библиотеке. Если есть идеи по улучшению, или несогласие с чём-то конкретно — всегда есть issue tracker, изгалайте свои мысли там, вас услышат.
                                +2
                                Забавно читать закрытые issues: «Не не, это же PSR», «Мы там голосовали все когда-то и менять не будем ничего».

                                Или от Nate Abele: «As far as I'm concerned, someone who's willing to suggest something so patently awful has no business going near any standards whatsoever.». Каким бы не было глупым предложение, отвечать так нельзя.

                                Нет смысла излагать свои мысли, там все уже решили.
                            –1
                            Полагаю, вы либо не читали список членов FIG, либо не знаете, что это за люди.
                            github.com/php-fig/fig-standards
                            Если вы именно этих людей назвали «выскочками», то, полагаю, вы очень плохо знакомы с миром PHP.
                            +1
                            Кстати, для Laravel4 начали писать доку: four.laravel.com/
                              0
                              Что-то на этот раз без ссылок для НЕпрограммистов, жаль :)
                              Каюсь, ошибся ссылкой :)
                                +2
                                О, мой пост в дайджест попал=) Приятно.
                                  +1
                                  Вот не как не пойму зачем логгер в psr а не в spl?
                                    0
                                    Хм, пользуясь случаем…
                                    Если есть вопросы по поводу нового Codeception — с радостью отвечу.
                                      0
                                      << Немного личных мыслей и критики
                                      Все по делу, я с ним согласен. Как и с критикой PSR-2. Особенно названия методов радуют.
                                        0
                                        По поводу АОП — что вы рекомендуете почитать? Не реализации, а теорию. У меня пока не было проблем со сквозным кодом (точнее, они легко решались событиями), но хочу знать, чего стоит бояться в будущем.
                                          0
                                          К сожалению, про АОП теории крайне мало. И отдельных материалов, без привязки к реализации, практически не найти. Однако есть целый сайт этузиаста АОП: crosscuttingconcerns.com. Там можно найти очень много всего полезного. А еще старенькая статья про АОП с phpAspect.
                                          0
                                          > Мультизадачность на PHP

                                          Никто не знает есть ли на win системах хотя бы один гарантированно работоспособный способ взаимодействия между процессами? PCNTL недоступен. proc_open невозможно использовать из множества критичных багов (то что поддерживается только блокирующий режим у потоков ладно, с этим жить можно, но что stream_select уже лет 5 работает криво это совсем печально...)
                                            0
                                            Минусуя — аргументируй! Ибо оно действительно не работает…

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

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