Группа PHP-FIG и разделяемые интерфейсы

Этот пост я написал по просьбе Эверта Пота, с которым успел пообщаться во время голландской конференции PHP в июне 2012 года. В статье подробно рассмотрены некоторые наблюдения, связанные с группой PHP-FIG и, надеюсь, после прочтения вы поймете, почему я больше не принимаю непосредственного участия в ней. Я был одним из основателей  Framework Interoperability Group (группа, отвечающая за стандартизацию PHP), которая теперь называется PHP-FIG. Я был одним из десятка людей, которые сидели за круглым столом в 2009 году в Чикаго во время php-конференции. Мы рассуждали о том, что могли бы сделать для улучшения совместной работы по нашим проектам. Также шли разговоры о том, чтобы упростить пользователям задачу по выбору одного из наших проектов в целях создания новых решений для наших приложений. (далее…)

Ловушки PHP

После прочтения статьи Securing PHP, написанной Джеймсом Каннингемом, я подумал, что неплохо бы собрать воедино несколько тезисов об использовании PHP. Имейте в виду, что я не эксперт по вопросам безопасности. Однако эта статья содержит несколько отправных точек по предотвращению заражения экcплоитами, повышению защищенности PHP-приложений и прочим вещам, которые я считаю самыми полезными из своей практики. Ваша оценка может (и, вероятно, будет) колебаться: нормально воспринимать все с недоверием. И это не зависит от того, где вы прочтете такую информацию — здесь или в другом месте. Это не столько контрольный список конкретных действий, сколько набор правил, на которые надо обратить внимание при программировании. (далее…)

Getter’ы и Setter’ы — магия, которая должна знать свое место

Джозеф Кроуфорд, один из моих читателей, прочитал статью о том, как я не люблю писать getter’ы и setter’ы и предположил, что я могу использовать волшебные методы __get и __set. Я скажу вам, почему это не очень хорошая идея, использовать их обычным способом. Кроме того, я собираюсь поведать вам историю, где они действительно оказались полезными, — речь пойдет о создании статических типов в PHP (динамический язык). Для тех, кто не знаком с методами __get и __set — это два «магических» метода, которые работают следующим образом: (далее…)

Начало работы с PHPUnit, Composer и Omniture API

Мы работаем с системами аналитики веб-приложений от компании Omniture. У меня давно возникло желание запросить текущие данные из дата-центра Omniture для формирования некоторых внутренних отчетов. Omniture при составлении отчетов использует RESTful API, после непродолжительной работы с которым, я решил, что неплохо было бы написать специально для него библиотеку оболочки. Недавно я прошел курс PHP Testing Bootcamp от Криса Хартджеса, и решил, что хочу написать библиотеку с помощью разработки через тестирование (TDD). Тут я понял, что сталкиваюсь с этим впервые. Кроме того, мне хотелось сделать библиотеку, совместимую с Composer. И для этого мне хватило уикенда. Когда выходные закончились, у меня на руках была почти законченная библиотека, которая требовала лишь внесения небольших изменений. Я многое узнал за эти два дня. Хочу поделиться с вами своим опытом. (далее…)

Ещё раз о filter_var

Очень часто приходится сталкиваться с простейшей задачей — валидацией данных из формы или любых других источников (кукисы, заголовок запроса, etc.) И каждый раз 95% разработчиков городят какие-то неимоверные велосипеды (регулярные выражения, «уникальные» алгоритмы хеширования паролей, etc). И каждый раз мне приходится рассказывать о такой невероятно полезной и нужной функции php — filter_var! Итак, встречаем, встроенная функция валидации данных. (далее…)

Итак, вы хотите писать тесты

Меня часто просят дать несколько советов о том, с чего начинать написание тестов для PHP. Вы обратились по адресу, так как я представляю себя в качестве эксперта-ниндзя-рок-звезды-сенсея-самоуверенного-эгоиста по этой теме. Я долго боролся с придумыванием ответа, который должен поместиться в 140 символов Twitter-сообщения. И вот недавно мне стало очевидно, что данная тактика не принесет плодов. Излагаю свои мысли о том, как начать работу с тестированием PHP-кода. (далее…)

Еще раз о росте PHP

Аналитическая компания Netcraft занимается мониторингом веб-серверов с 1995 года, в числе прочего отслеживая применение широкого спектра скриптовых технологий в сети, — с 2001 года. Одной из таких скриптовых технологий является язык PHP, который в настоящее время отмечен компанией Netcraft на более чем 200 миллионах веб-сайтов. Первая версия PHP была названа Personal Home Page Tools (Tools PHP), когда была выпущена Расмусом Лердорфом в 1995 году. PHP 1 до сих пор общедоступна, ее можно скачать с museum.php.net. При весе в 26 килобайт архив php-108.tar.gz по сегодняшним меркам мал, но позволяет разработчикам создавать гостевые книги и другие формы обработки приложений. (далее…)

Принцип Инверсии Управления – Голливудский Принцип

Среди программистов (включая и меня, так что здесь я публично признаю свою вину) бытует мнение о том, что Инверсия Управления (IoC) является не более, чем синонимом для старого принципа Внедрения Зависимости (DI). Существует простая причина для такой точки зрения: идея Принципа Внедрения зависимостей состоит в реализации классов, чьи элементы обеспечиваются окружающим контекстом, что позволяет не изменять код программы. Таким образом, процесс может быть рассмотрен как часть принципа IoC. Но, несмотря на то, что уравнение DI=IoC может рассматриваться в целом как справедливое утверждение, все же концепция Инверсии Управления сама по себе гораздо шире. Фактически мы можем сказать, что DI – это частный случай IoC, но далеко не единственный. Это вновь приводит нас к началу: если DI – это всего лишь шаблон, который опирается на сильные стороны IoC, то что же такое Прицип Инверсии Контроля?
(далее…)

Принцип открытости / закрытости (open closed solid)

Должен признаться, когда впервые увидел академическое определение принципа открытости/закрытости, его смысл был для меня удивительно ясен. Я отбросил из определения весь технический жаргон, и принцип читался как заклинание, которое мы слышали раньше много раз: «Не ломай ядро». Ну, правда, здесь существует некоторая двусмысленность высказывания, так как есть по крайней мере два общих подхода к поддержанию «ядра» в полной сохранности, позволяющие аккуратно расширять его функциональные возможности. Первый подход (вот почему я использовал намеренно термин «расширение») — Наследование. Наследование является, пожалуй, самым переоцененным приемом для повторной реализации. Такой процесс легко осуществим, но здесь существует определенный риск разрушить хрупкую иерархию моделей. Второй подход называется Композиция. Подход не так прост, как наследование, но это тоже довольно аккуратный способ расширить программный модуль, не меняя его. (далее…)

PHPOffice

Команда энтузиастов, под брендом PHPOffice ведёт разработку библиотек для чтения и генерации офисных файлов. На данный момент доступны библиотеки для следующих форматов:

  • Word (word2007, odt, pdf, rtf, html)
  • Excel (excel2007, excel5, csv, pdf, html)
  • Power point (powerpoint2007, odp, serialized)
  • Visio (msvision2007, msvisio2013)
  • Project (msprojectexchange, gantproject)
(далее…)


Любишь мемасики?

Подпишись на мой телеграм-канал!

Открыть
Закрыть