15.11 2013

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и
понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не
изменились.
Команда (Command) относится к классу поведенческих паттернов.
Команда представляет собой некоторое действие и его параметры. Суть паттерна в том, чтобы отделить инициатора
и получателя команды.
Этот паттерн широко используется в C# и Java для обработки событий возникающих в форме (GUI). Так как на PHP никто не
занимается разработкой GUI приложений, то приводить подобный код я не стану. Но не стоит отчаиваться, в PHP он нашел
свое место.
Читать дальше
19.06 2013

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и
понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не
изменились.
Итератор (Iterator) относится к классу поведенческих паттернов.
Используется в составных объектах. Предоставляет доступ к своим внутренним полям не раскрывая их структуру.
Зачастую этот паттерн используется вместо массива объектов, чтобы не только предоставить доступ к элементам, но и наделить некоторой логикой.
Это может быть ограничение доступа, сортировка или любая другая операция над множеством объектов.
На этом применение паттерна не ограничивается, иногда его удобно использовать для создания своеобразного бесконечного конвейера.
Правда с приходом PHP 5.5 на это место придут генераторы
Читать дальше
22.02 2013

Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и
понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не
изменились.
Цепочка обязанностей (Chain of Responsibility) относится к классу поведенческих паттернов.
Служит для ослабления связи между отправителем и получателем запроса. При этом сам по себе запрос может быть произвольным.
Паттерн не просто так называется цепочкой обязанностей. По сути это набор обработчиков, которые по очереди получают
запрос, а затем решают обрабатывать его или нет. Если запрос не обработан, то он передается дальше по цепочке. Если
же он обработан, то паттерн сам решает передавать его дальше или нет.
Читать дальше
20.02 2013
Начиная очередной проект я часто сталкиваюсь с тем, что нужно скачивать последние версии фреймворков, строить скелет приложения
и в сотый раз писать или переносить автолоадер. В некоторой степени я завидовал рубистам, которые могли поставить свои
любимые рельсы буквально за минуту. Для php же приходилось довольствоваться файлом .gitmodules
, который кочевал от
одного проекта к другому.
Но случилось чудо и на свет появился composer. Устанавливается он до безобразия просто:
curl -sS https://getcomposer.org/installer | php
Если же вы пользователь PHPStorm, то можете сделать tools -> init composer
Читать дальше
28.11 2012
В один прекрасный день вы решили, что больше не можете жить без замечательного key-value хранилища redis. И если все что вас сдерживало это установка его на сервер, то вот вам руководство:
Читать дальше
21.08 2011
Перед прочтением ознакомьтесь с введением в паттерны проектирования на PHP, в котором описаны принятые соглашения и понятия. Данная статья дополняется с некоторой периодичностью, так что если вы ее читали ранее, не факт что данные не изменились.
Прокси (Proxy, Заместитель) относиться к классу структурных паттернов. Является суррогатом другого объекта и контролирует доступ к нему.
Читать дальше
29.06 2011
Команда разработчиков проанонсировали новую версию PHP, которая включает в себя несколько новых фич и удаление устаревших.
Список изменений:
Были удалены
- синтаксис break/continue $var
- ini директивы
register_globals
, allow_call_time_pass_reference
и register_long_arrays
session_is_regisitered()
, session_registered()
и session_unregister()
Следующая альфа версия должна появится в течении 4 недель.
Читать дальше
31.05 2011
Разработка через тестирование - это один из способов разработки программного обеспечения, который состоит из множества повторяющихся итераций, включающих:
- написание теста, покрывающего желаемые изменения
- написание кода, который пройдет тест
- проведение рефакторинга
Сегодня я хочу вам показать этот метод на примере JavaScript и QUnit.
Читать дальше
08.04 2011
Порой перед разработчиком встает задача проделать действительно долгую операцию после отображения страницы, как например рассылка почтовых сообщений или обмен данными с удаленным сервером. Можно положить эту задачу на плечи крона, но если это не удобно/медленно/кошерно, приходится выкручиваться и изобретать странные решения. Одним из таких решений является выполнение долгой операции непосредственно после рендеринга страницы, что может подвесить соединение на пару (десятков, сотен) секунд, или, если поступить добросовестно и оборвать соединение, пройдет незаметно для пользователя. Об этом методе сегодня и поговорим.
Читать дальше
04.03 2011
Вчера в rfc попало предложение встроить в интерпретатор PHP собственный WEB сервер, что позволило бы сделать php скрипты более удобными для использования на системах без установленного веб-сервера. Запускать такой сервер предлагают из командной строки:
php -S localhost:8000 docroot
а в качестве замены к mod_rewrite использовать:
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"]))
return false; // отдаем файл как есть
else
...
Для желающих, на странице rfc выложен готовый патч, с помощью которого можно попробовать сие чудо в действии уже сейчас. Судя по положительной реакции разработчиков, можно в скором времени ожидать данную фичу в релизных сборках.
Читать дальше