Наследование бандлов
У 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"