Паттерны и архитектура веб-приложений

Относительно недавно для себя открыл, что помимо, собственно написания кода, изучения новых технологий/ использования внешних API, есть вещи и намного сложнее.

Вещи, необходимость понимания которых возникает при разработке средних и больших проектов. Но даже для относительно небольших проектов это важно.

Наследование бандлов

наследование У Symfony framework  интересная система наследования бандлов (bundle). Интересная она тем, что действует как ООП наследование с точностью до наоборот. При наследовании бандла модификации задевают родительский. Это очень удобно: если вам не понравился какой-то компонент, или вы хотите его расширить/заменить реализации - можно использовать механизм наследования бандлов, не изменяя при этом родительский бандл, но при использовании родительского бандла как раз будет использоваться новый функционал.

Работа с полями класса в Ruby.

ООП в этом вашем Ruby сильно отличается от ООП в этом нашем пролетарском php =). К примеру, возьмем такую тривиальную вещь как поля класса. Несмотря на то, что методы инкапсулируются, поля - нет. (Другими словами, для полей нельзя применить модификатор доступа). Все поля protected.

Service Container and Dependency Injection in Symfony framework

Иногда одна единственная идея способна изменить все представление о программировании. Для меня одной из такой идей была идея сервис-контейнера. Это как золотой грааль). Вообще-то, идея не сугубо Symfony framework, это просто один из удачных паттернов проектирования приложений, часто используемый в Symfony.

Коллекция Bundle

Костыли_и_велосипедыПомимо стандартного набора поставки Symfony, существует множество бандлов (Bundle) от сторонних разработчиков, которые очень упрощают жизнь при разработке приложения (действительно, зачем изобретать велосипед, если есть готовое решение). Не будем разворачивать спор по поводу нередкого присутствия в бандлах функционала, который никогда не будет использован в вашем приложении - скорость разработки покроет эти достаточно мелкие проблемы. Приведу скромную коллекцию бандлов, сильно упрощающих жизнь.

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

composer require "presta/sitemap-bundle:~1.4"


Использование Composer

Composer - менеджер зависимостей, или, лучше сказать, пакетов для php.

Официальная страница: https://getcomposer.org/

Позволяет следит за компонентами, которые используются в php-приложении, устанавливать их, обновлять и т.д.

Doctrine. Структура. Entity

Сразу после начала работы с Doctrine обзавелся некоторыми предрассудками. Сам их сейчай искоренил, но, может у кого-то они еще есть, может заметка кому-то поможет =)

Wordpress. Введение. (Урок 1)

Настало время разобраться с Wordpress. Лично я использую его достаточно давно, но только в качестве пользователя/администратора, с небольшим полуинтуитивным допиливанием некоторого недостающего лично мне функционала. Но теперь пришло время уйти глубже.

Использование assetic в Symfony framework

Несколько заметок назад я рассмотрел работу с assets в Symfony framework. Этот пример показывает, как работать со своими ассетами. Но на практике часто приходится использовать внешние ассеты.

Для таких, и не только таких задач подходит assetic. Достаточно сложно в двух словах описать, что это такое. Но для себя я представляю assetic как менеджер ассетов.

Вмещение float-элементов

Недавно столкнулся с достаточно неприятной проблемой - при использовании свойств float в дочерних div’ах, они не растягивают по вертикали размер родительских элементов, и как бы "перекрывают" их. Оказывается, проблема достаточно тривиальная и возникла у меня только из-за отсутствия опыта верстальщика, вскоре я нашел решение в заметке, которую с удовольствием переведу на русский.

Работа с базами данных в php. Модуль MySQL

Если раньше (до php 5.0) можно было использовать более-менее тривиальный способ работы с базами данных в php (через модуль MySQL), то с новыми версиями php приходится переходить к новым модулям, таким как mysqli или pdo. Модуль MySQL deprecated в php 5.5.x и вскоре будет полностью исключен.

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

Создание сайтов

Состоянием на 2012 год, в Интернете насчитывалось 612 843 429 сайтов. Это количество стремительно растет.

Так зачем же люди создают веб сайты?

Авторизация и ограничение доступа в Symfony framework (Урок 14)

Итак, в этой заметке мы научимся ограничивать доступ к разделам сайта, написанного с использованием Symfony framework. Symfony framework предоставляет мощные средства для контроля доступа, которые позволяют ограничивать доступ как по url, так и целым контроллерам.