AdSense - шапка

суббота, 3 декабря 2011 г.

PHP. Ленивая инициализация (Lazy initialization)

Сегодня я хочу рассказать о ленивой, или отложенной инициализации.

Наиболее часто в web-разработке применяется принцип создания объекта непосредственно перед обращением к нему (здесь понимается, что создание объекта - трудоёмкая операция). Что нам это дает:
  1. Приложение быстрее инициализируется.
  2. Приложение может быстрее работать.
Рассмотрим на примере ленивой инициализации соединения с базой данных. Если, например, приложение генерирует страницу и ему не понадобилась база, то соединение с ней и не будет создано, а, значит, общее время работы скрипта уменьшится.

Для чего можно применять ленивую инициализацию?
  1. Как я уже сказал, для создания соединения с базой данных.
  2. Для обращения к данным из кэша - если они не нужны для генерации страницы, то и не следуют обращаться к кэшу.
  3. Для получения данных от других веб-приложений. Причина аналогична.
  4. Для загрузки изображений при работе с gd2 или какой - либо иной графической библиотекой php.

среда, 30 ноября 2011 г.

PHP. Разработка классов - моделей с использованием магических методов __set и __get

Сегодня я покажу небольшой пример разработки классов - моделей.

Модель - это класс, который используется для хранения данных о каких-либо сущностях, например, о пользователях, статьях, платежах и т.д.

Разработка классов - моделей с помощью волшебных методов __set, __get, __isset, __unset часто используется во многих веб-приложениях и фреймворках, например, в известном фреймворке Yii.

Для простоты, будем использовать только первые два волшебных метода. С их помощью мы сможем написать сеттеры и геттеры для доступа к данным, а сами данные будем хранить в массиве.

суббота, 26 ноября 2011 г.

PHP. Сериализация объектов в JSON

Несколько слов о сериализации
Простыми словами, сериализация - это процесс представления какого - либо объекта в виде строки или последовательности бит, как написано в википедии.

В примере я покажу, как проводить сериализацию объектов в JSON формат.
Сериализация очень удобна для:
  1. Обмена данными между клиентской и серверной частью приложения (js и php), поскольку JSON - есть нотация объектов в JavaScript.
  2. В сериализованном виде удобно обмениваться информация между web - приложениями. Тут использование JSON не обязательно, можно, например, использовать XML.

вторник, 22 ноября 2011 г.

PHP. Логгирование и мониторинг памяти с помощью паттерна Decorator(декторатор)

В этой статье я хочу показать, как можно логгировать обращение к методам объектов и потребление памяти с помощью паттерна Декоратор.

Подробное описание паттерна, а также классическую реализацию паттерна можно посмотреть на вики.
UML диаграмма паттерна Декоратор
А теперь я покажу пару примеров, как с помощью декораторов можно логгировать внешние вызовы методов класса, а также анализировать, как обращение к объекту влияет на расход оперативной памяти.

P.S. Предложенная реализация будет отличаться от классической, поскольку декоратор не будет наследован отдекорируемого класса. Это даёт как преимущества, так и определённые недостатки. Обсудим их после примера.

воскресенье, 20 ноября 2011 г.

PHP. Паттерн Abstract Factory(Абстрактная фабрика).

Общие сведения о паттерне Абстрактная фабрика

Итак, я начинаю цикл статей, посвященных использованию паттернов проектирования при разработке web-приложений на PHP.

Описание паттерна абстрактная фабрика можно посмотреть в википедии. Если коротко, то это порождающий паттерн, который позволяет создавать целые семейства объектов. При этом, подобный подход гарантирует сочетаемость объектов, т.е. можно динамически менять одно семейство компонентов на другое при сохранении работоспособности приложения.

К плюсам паттерна относят:
  1. изоляция конкретных классов
  2. упрощение замены семейств продуктов
  3. гарантированная сочетаемость продуктов
Минус только 1:
  1. сложно добавить поддержку нового вида продуктов.
UML диаграмма паттерна Абстрактная фабрика