Symfony

Lightweight controllers everywhere in Symfony

The usual way of defining a controller in a default Symfony installation is by placing it in the src/Controller directory, but there might be situations where you just don’t want to do that. For instance, if you’re using some sort of domain-driven design and want to organize your project according…

Composition over inheritance: tackle the “Template Method”

In this article we’re gonna talk about composition over inheritance but not approaching this topic from a theoretical point of view (you can find dozens of good articles online by googling the topic), but instead by providing an example of something that in literature is a well-know pattern: Template Method….

Dependency injection – Come iniettare servizi taggati

Tagged services Per indicare che un servizio svolge un particolare ruolo in Symfony è possibile configurarlo aggiungendo uno o più tags alla sua definizione. Per esempio, etichettando un servizio con il tag twig.extension si indica a Symfony che il servizio deve essere trattato come una estensione di twig. Questo meccanismo…

TWIG: include VS embed VS macro

There are various types of code reuse in Twig but, what are the differences between them? In this article we’ll explore the differences between include, embed and macro. First of all, some definitions from the documentation: The include statement includes a template and returns the rendered content of that file…

Symfony: Autowire dei repository Doctrine (Repositories as Service)

Con la versione 3.3, Symfony ha introdotto l’autowrire e l’autoconfigure dei servizi, risparmiando a noi developer parecchio lavoro “noioso”. Spesso capita di dovere iniettare un repository Doctrine: out of the box non è possibile farlo. Di default infatti i repository non sono dichiarati come servizi e non sono quindi utilizzabili…

Come rendere fault-tolerant SncRedisBundle

Capita di voler utilizzare Redis per memorizzare informazioni non fondamentali o che possono essere rigenerate anche nel caso non fossero accessibili.In questi casi se il server Redis dovesse non essere disponibile per un qualsiasi problema, il nostro servizio sarebbe completamente interrotto pur essendo funzionanti tutti i sistemi necessari ad erogarlo.Questo…

Doctrine EntityListener Pills: Comparing old and new values when updating data

You all, at some point, faced the necessity to compare old and new values when storing an entity. Here is where Doctrine EntityListener comes at help. Let imagine you have this User entity

and you want to notify the user when the email address has been changed. All you…

Uso del Page Object Pattern con Behat: esempio pratico

Il Page Object è un pattern utilizzato nei functional test per astrarre l’interazione con gli elementi della UI. All’interno di un oggetto vengono incapsulate le interazioni e le funzionalità di una pagina web che vengono esposte tramite api, nascondendo la struttura degli elementi HTML all’esterno. Per approfondire il concetto rimando…

1 2 4