Patterns and Architecture in Web Applications

Recently, I discovered for myself that apart from writing code and learning new technologies/using external APIs, there are things that are much more challenging.

These are things that need to be understood when developing medium to large projects. But even for relatively small projects, this is important.

Inheritance of bundles

In the Symfony framework, there is an interesting system of bundle inheritance. It is interesting because it works like object-oriented inheritance, but in reverse. When a bundle is inherited, modifications also affect the parent bundle. This is very convenient: if you don't like a certain component or you want to extend/replace its implementation, you can use the mechanism of bundle inheritance without modifying the parent bundle. However, when using the parent bundle, the new functionality will be used.

Working with class fields in Ruby.

OOP in this Ruby of yours is quite different from OOP in our proletarian php =). For example, let's take something as trivial as class fields. Despite the fact that methods are encapsulated, fields are not. (In other words, access modifiers cannot be applied to fields). All fields are protected.

Service Container and Dependency Injection in Symfony framework

Sometimes a single idea can change everything about programming. For me, one of those ideas was the concept of a service container. It's like the holy grail). Actually, the idea itself is not specific to Symfony framework, it's just one of the successful patterns of application design often used in Symfony.

Collection Bundle

Aside from the standard Symfony distribution, there are many bundles from third-party developers that greatly simplify application development (after all, why reinvent the wheel when there is a ready-made solution available). Let's not get into a debate about the often presence of functionality in bundles that will never be used in your application—development speed will cover these fairly minor issues. Here is a modest collection of bundles that greatly simplify life.

To install a bundle, first add it to your project using composer, for example:

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


Usage of Composer

Composer - a dependency manager, or rather, a package manager for php.

Official website: https://getcomposer.org/

Allows you to keep track of components used in a php application, install them, update them, etc.

Doctrine. Structure. Entity

Right after starting to work with Doctrine I acquired some prejudices. I have since eradicated them, but maybe someone still has them, maybe this note will help someone =)