Дайджест интересных новостей и материалов из мира PHP за последние две недели №5 (17.11.2012 — 30.11.2012)
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Новости и релизы
PHP
- PHP the Nice Way [6] — Отличнейший пост, в котором автор делится своим опытом программирования на PHP, рассказывает о своих ошибках и открытиях. Пост полон полезных советов и рекомендаций.
- Используйте лучший API в вашем PHP MySQL приложении [7] — На данный момент в PHP доступно три интерфейса для работы с MySQL, а именно: ext/mysql, ext/mysqli и PDO_MySQL. В php.internals [8] разгорелось обсуждение о необходимости исключения морально устаревшего ext/mysql из поставки по-умолчанию и переносе в PECL. В своем посте автор подробно раскрывает эту тему, приводит тщательное всестороннее сравнение трех интерфейсов.
- PHP: Эра тестирования [9] — По мнению автора, за последнее десятилетие PHP сообщество прошло через несколько важных этапов: переход к ООП, безопасность веб-приложений, использование фреймворков, стандарты кода, и на данный момент проходит этап, который можно назвать эрой тестирования.
- If it's not written in PHP it's irrelePHPant! [10] — Автор не без доли юмора призывает PHP сообщество к активному написанию собственных инструментов исключительно на PHP.
- 3 странных факта из PHP, о которых вы могли не знать [11] — Если вы программируете на PHP достаточно долго, то для вас этот пост будет просто напоминанием о неочевидном поведении вещественных чисел в PHP или об «эффектах» нестрогой типизации. Однако если вы новичек, то эти факты могут быть открытием.
- PHP Trends [12] — Небольшое приложение, которое показыает список PHP библиотек, фреймворков и т.д. (репозиториев на GitHub), отсортированных по популярности. В качестве индекса популярности используется число добавивших репозиторий в избранное.
- Упрощенное хэширование паролей [13] — Некоторое время назад Anthony Ferrara предложил включить стандартизированный интерфейс хэширования в ядро PHP. Предложение было поддержано голосованием [14], а затем реализовано и уже включено в версии PHP 5.5. Автор предложения в своем посте рассказывает подробности нового функционала и отвечает на самые частозадаваемые вопросы по этому поводу.
- Запускаем программы командной строки как функции в PHP [15] — Автор был вдохновлен Питоновской sh [16] и создал нечто подобное для PHP. Используя разработанный им инструмент можно делать вот такие вещи, например: $sh->ssh(array('myserver.com', '-p' => 1393))->tail(array("/var/log/dumb_daemon.log", 'n' => 100)); и это будет равносильно вызову: ssh myserver.com -p 1393 tail /var/log/dumb_daemon.log -n 100 из командной строки.
Материалы для обучения
- Мигрируем на Dependency Injection [17] — Интересный пост, в котором автор подробно описывает процесс изменения кода небольшого приложения, которое не использует DI к такому, которое использует.
- Создаем собственный фреймворк на основе компонентов Symfony2 [18] — В 11 [18] выпуске автор расскажет нам о возможностях HttpKernelInterface, добавляя все большее количество listeners на запрос. Это очень удобный способ протестировать и отладить отдельную фичу, а потом просто интегрировать её во flow запроса, там где необходимо. Предыдущие выпуски: 1 [19], 2 [20], 3 [21], 4 [22], 5 [23], 6 [24], 7 [25], 8 [26], 9 [27], 10 [28]
- Принцип единственной обязанности [29] — Продолжаем рассматривать принципы SOLID. [30] На этот раз речь пойдет о букве «S». Для начала автор в посте демонстрирует нарушение принципа на примере класса, который кроме обработки данных пользователя, также реализует функционал доступа к базе данных. Затем автор рефакторит код, разбивая один класс на несколько новых, каждый со своими обязанностями.
- Суп из парадигм [31] — В этом небольшом видеоролике небезызвестный деятель PHP сообщества — Anthony Ferrara рассказывает о разнице между процедурным, объектно-ориентированном и функциональным программированием и о том, как они пересекаются в коде.
- Кодирование [32] — Еще один видеоролик от Anthony Ferrara, на этот раз о кодировании информации.
- Как делать вид, что вам не безразлична ваша работа [33] — Интересный доклад о том, что делать (PHP) разработчику для собственного развития.
- Что нового в ZendForm появится с версией ZF 2.1 [34] — Перевод статьи Michaël Gallego [35] об обновлениях компонента ZendForm в ZF 2.1 (новые элементы, менеджер элементов, короткие имена, зависимости и полностью обновленная загрузка файлов). Оригинал. [36]
- Вопросы и мысли новичка о рендеринге на клиентской стороне [37] — Автор впервые задается вопросом рендеринга на клиентской стороне, сравнивая рендеринг на сервере и клиенте, а также анализируя сложности, которые могут возникать при рендеринге контента на клиентской стороне. Предлагает решение выявленных проблем и отвечает на вопрос, когда можно использовать рендеринг на клиентской стороне и как для этого можно использовать ZF2.
- Отладка и профилирование на PHP с помощью Xdebug [38] — Подробный туториал о использовании базовых возможностей Xdebug. В качестве IDE для отладки использован NetBeans.
- Улучшение производительности Zend Framework 2 [39] — Пока еще небольшой список советов и трюков, направленных на улучшение производительности приложений на ZF2. Автор планирует постоянно пополнять список, собирая советы и трюки из разных источников в одном месте.
- Создание класса корзины покупок [40] — Подробный туториал по реализации корзины покупок в ООП стиле от Ларри Ульмана. [41]
- Не тяните ваши зависимости [42] — В этой статье автор снала объясняет, почему в некоторых случаях необходимо тянуть зависимости в Symfony2 и затем — почему этого не стоит делать в остальных случаях.
- Отделение кода приложения от фреймворка [43] — Автор пишет о том, что в большинстве случаев код приложения сильно зависит от фреймворка, а также приводит рекомендации по тому, как максимально ослабить такие связи.
- Конфигурация Nginx для Symfony2 [44] — Расстановка точек над конфигурацией NGINX для Symfony2 приложений.
- PHP.Kryptik.AB – Дайте мне ваш FTP! [45] — В посте речь идет о давно гуляющей по сети малвари, которая угоняет пароли от FTP серверов и затем, подключившись к ним, встраивает вредоносный код в найденные PHP скрипты. Автор рассказывает, как происходит заражение, как обеззаразить сайт и как не допустить повторного заражения.
- Валидация и фильтрация на PHP [46] — Тема стара, и тем не менее, автор рассматривает типичные угрозы безопасности, рассказывает о том, что такое валидация. Приводит пример реализации с использованием стандартного расширения для фильтрации данных [47] касается реализации на Symfony 2, Laravel 3, CakePHP 2 а также делится своим собственным модулем для фильтрации данных.
- Геттеры и сеттеры — магия, которая должна знать свое место [48] — Автор рассказывает, почему считает использование геттеров и сеттеров обычным способом не самой хорошей идеей, а также приводит пример когда они были действительно необходимы.
- Строго типизированный JSON на PHP [49] — Продолжение предыдущего поста о необычном использовании сеттеров.
- Создаем конструктор запросов на PHP [50] — Небольшая заметка о создании простого конструктора запросов.
- Ваше первое знакомство с Phalcon [51], 2 [52] — Появившись совсем недавно, этот фреймфорк стремительно набирает популярность. Причины понятны: Phalcon написан на C и поставляется в виде нативного расширения для PHP, отсюда высочайшая производительность. Статья представляет собой отличный туториал от авторов фреймворка. В первой части описание и обзор возможностей, во второй — простое приложение-блог. Также по теме доступна статья на Хабре [53]
- Zend Framework Day 2012 [54] — Совсем недавно в Киеве прошла конференция, посвященная Zend Framework и PHP. На сайте конференции доступны слайды докладов. Также имеется интересный отчет. [55]
CMS/CMF
- TYPO3 CMS 6.0 released [56] — Вышла новая версия некогда популярной, но в последнее время непрерывно теряющей позиции, CMS. Посмотрим, может свежая версия изменит тенденцию.
-
Релизы плагинов для WordPress
- bbPress [57] — плагин позволяет создать полноценный форум на базе WordPress.
- Knews Multilingual Newsletters [58] — позволяет создавать качественные мультиязычные подписки.
- WP Subscriber Form [59] — добавляет форму подписки в контент.
- BackWPup [60] — позволяет создавать резервные копии базы данных и файлов вашего WordPress сайта.
- Theme-Check [61] — инструмент для разработчиков тем, позволяет автоматически проверять тему на соответствие стандартам. [62]
- WP SlimStat [63] — простой, но мощный плагин аналитики.
- Force Password Change [64] — требует от пользователя смены пароля во время первого входа на сайт.
- Batcache [65] — позволяет использовать Memcached для кэширования отрендеренных страниц.
- Edit Flow [66] — предоставляет кастомные статусы, календарь, редакторские комментарии и другие возможности для облегчения совместного использования сайта на WordPress.
- No Weak Passwords [67] — запрещает использование слабых паролей.
- Automatic Updater [68] — автообновление плагинов, тем и ядра.
- BuddyPress Media [69] — позволяет пользователям загружать и делиться изображениями, видео и аудио с другими участниками социальной сети, построенной на BuddyPress [70].
- Ice Visual Revisions [71] — добавляет в редактор возможность визуального отображения разницы между ревизиями.
И напоследок
Ссылка [73] на предыдущий выпуск.
Материал подготовили dbritan [74], nesttor [75] и pronskiy [76]
Автор: alexzfort
Источник [77]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/21543
Ссылки в тексте:
[1] Релизы PHP 5.4.9 и PHP 5.3.19: http://www.php.net/archive/2012.php#id2012-11-22-1
[2] Релиз MongoDB PHP Driver 1.3.0: http://blog.mongodb.org/post/36666163412/introducing-mongoclient
[3] посте.: http://derickrethans.nl/mongoclient.html
[4] Symfony 1.4.20: http://symfony.com/blog/security-release-symfony-1-4-20-released
[5] 2.0.19 и 2.1.4: http://symfony.com/blog/security-release-symfony-2-0-19-and-2-1-4
[6] PHP the Nice Way: http://rarestblog.com/blog/2012/11/20/php-the-nice-way/
[7] Используйте лучший API в вашем PHP MySQL приложении: http://blog.ulf-wendel.de/2012/php-mysql-why-to-upgrade-extmysql/
[8] php.internals: http://news.php.net/php.internals
[9] PHP: Эра тестирования: http://benramsey.com/blog/2012/11/the-era-of-php-testing/
[10] If it's not written in PHP it's irrelePHPant!: http://edorian.posterous.com/if-its-not-written-in-php-its-irrelephpant
[11] 3 странных факта из PHP, о которых вы могли не знать: http://phpmaster.com/3-strange-php-facts-you-may-not-know/
[12] PHP Trends: http://phptrends.com/
[13] Упрощенное хэширование паролей: http://blog.ircmaxell.com/2012/11/designing-api-simplified-password.html
[14] голосованием: https://wiki.php.net/rfc/password_hash
[15] Запускаем программы командной строки как функции в PHP: http://gonzalo123.com/2012/11/19/allow-to-call-shell-programs-as-functions-with-php/
[16] sh: http://amoffat.github.com/sh/
[17] Мигрируем на Dependency Injection: http://blog.everymansoftware.com/2012/11/migrating-to-dependency-injection.html
[18] Создаем собственный фреймворк на основе компонентов Symfony2: http://protalk.me/episode-11-creating-own-php-framework-using-symfony2-components
[19] 1: http://protalk.me/episode-1-creating-own-php-framework-using-symfony2-components
[20] 2: http://protalk.me/episode-2-creating-own-php-framework-using-symfony2-components
[21] 3: http://protalk.me/episode-3-creating-own-php-framework-using-symfony2-components
[22] 4: http://protalk.me/episode-4-creating-own-php-framework-using-symfony2-components
[23] 5: http://protalk.me/episode-5-creating-own-php-framework-using-symfony2-components
[24] 6: http://protalk.me/episode-6-creating-own-php-framework-using-symfony2-components
[25] 7: http://protalk.me/episode-7-creating-own-php-framework-using-symfony2-components
[26] 8: http://protalk.me/episode-8-creating-own-php-framework-using-symfony2-components
[27] 9: http://protalk.me/episode-9-creating-own-php-framework-using-symfony2-components
[28] 10: http://protalk.me/episode-10-creating-own-php-framework-using-symfony2-components
[29] Принцип единственной обязанности: http://phpmaster.com/the-single-responsibility-principle/
[30] SOLID.: http://ru.wikipedia.org/wiki/SOLID_(объектно-ориентированное_программирование)
[31] Суп из парадигм: http://www.youtube.com/watch?v=CV4vPsEizJM&feature=youtu.be
[32] Кодирование: https://www.youtube.com/watch?v=RLmuFlDygn0
[33] Как делать вид, что вам не безразлична ваша работа: http://jmather.com/talks/2012-11-17/
[34] Что нового в ZendForm появится с версией ZF 2.1: http://zftutorials.ru/blog/discover-whats-coming-for-zendform-in-zf-2-1.html
[35] Michaël Gallego: http://www.michaelgallego.fr/blog/
[36] Оригинал.: http://www.michaelgallego.fr/blog/2012/11/09/discover-whats-coming-for-zendform-in-zf-2-1/
[37] Вопросы и мысли новичка о рендеринге на клиентской стороне: http://www.michaelgallego.fr/blog/2012/11/26/questions-and-thoughts-about-client-side-rendering-from-a-zf-2-developer/
[38] Отладка и профилирование на PHP с помощью Xdebug: http://phpmaster.com/debugging-and-profiling-php-with-xdebug/
[39] Улучшение производительности Zend Framework 2: http://hounddog.github.com/blog/performance-in-zend-framework-2/
[40] Создание класса корзины покупок: http://www.peachpit.com/articles/article.aspx?p=1962481
[41] Ларри Ульмана.: http://www.larryullman.com/
[42] Не тяните ваши зависимости: http://www.testically.org/2012/11/28/dont-pull-your-dependencies/
[43] Отделение кода приложения от фреймворка: http://phpmaster.com/living-apart-together-decoupling-code-and-framework/
[44] Конфигурация Nginx для Symfony2: http://ihaveabackup.net/2012/11/17/nginx-configuration-for-symfony2/
[45] PHP.Kryptik.AB – Дайте мне ваш FTP!: http://blog.twelvecode.com/2012/11/18/php-kryptik-ab-give-me-your-ftp/
[46] Валидация и фильтрация на PHP: http://foaa.de/blog/2012/11/27/php-validation-and-sanitization/
[47] расширения для фильтрации данных: http://www.php.net/manual/en/intro.filter.php
[48] Геттеры и сеттеры — магия, которая должна знать свое место: http://rarestblog.com/blog/2012/11/23/getters-and-setters/
[49] Строго типизированный JSON на PHP: http://rarestblog.com/blog/2012/11/23/json-plus-static-php-types-set/
[50] Создаем конструктор запросов на PHP: http://rarestblog.com/blog/2012/11/22/building-a-query-builder-in-php/
[51] Ваше первое знакомство с Phalcon: http://blog.phalconphp.com/post/36646589046/tutorial-your-first-encounter-with-phalcon-part-1
[52] 2: http://blog.phalconphp.com/post/36648855158/tutorial-your-first-encounter-with-phalcon-part-2
[53] статья на Хабре: http://habrahabr.ru/post/159217/
[54] Zend Framework Day 2012: http://frameworksdays.com/event/zend-framework-day-2012/page/program
[55] отчет.: http://tokarchuk.ru/2012/11/zend-framework-day-2012/
[56] TYPO3 CMS 6.0 released: http://typo3.org/news/article/typo3-cms-60-released/
[57] bbPress: http://bbpress.org/blog/2012/11/bbpress-2-2-now-available/
[58] Knews Multilingual Newsletters: http://www.knewsplugin.com/
[59] WP Subscriber Form: http://sharp-coders.com/plugins/wp-plugins/wp-subscriber-form
[60] BackWPup: http://wordpress.org/extend/plugins/backwpup/
[61] Theme-Check: http://wordpress.org/extend/plugins/theme-check/
[62] стандартам.: http://codex.wordpress.org/Theme_Review
[63] WP SlimStat: http://wordpress.org/extend/plugins/wp-slimstat/
[64] Force Password Change: http://wordpress.org/extend/plugins/force-password-change/
[65] Batcache: http://wordpress.org/extend/plugins/batcache/
[66] Edit Flow: http://editflow.org/
[67] No Weak Passwords: http://wordpress.org/extend/plugins/no-weak-passwords/
[68] Automatic Updater: http://wordpress.org/extend/plugins/automatic-updater/
[69] BuddyPress Media: http://wordpress.org/extend/plugins/buddypress-media/
[70] BuddyPress: http://buddypress.org/
[71] Ice Visual Revisions: http://wordpress.org/extend/plugins/ice/
[72] Восхитительная простая и практичная библиотека для сложения двух чисел на PHP: https://github.com/Herzult/SimplePHPEasyPlus
[73] Ссылка: http://habrahabr.ru/company/zfort/blog/158977/
[74] dbritan: http://habrahabr.ru/users/dbritan/
[75] nesttor: http://habrahabr.ru/users/nesttor/
[76] pronskiy: http://habrahabr.ru/users/pronskiy/
[77] Источник: http://habrahabr.ru/post/160929/
Нажмите здесь для печати.