Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Śpiechu, dodany: 21.09.2015 22:45, tagi: symfony, php

It passed about half year since I scratched Symfony2 Framework surface. Basics are behind me, now it’s time for middle-level stuff. I’m excited to start a whole new Symfony related blog post series. I didn’t wanted to copy typical tutorial topics. It would be waste of your time and my work. I thought it would be nice to show some code related to Symfony Dependency Injection Container.

Tutorials usually show typical container services definition. Boring stuff. I’m going to show you dynamic collection of services passed into processor service. The idea is that collection doesn’t know its elements, so every bundle can define its own services to be added to collection. The secret is tags. To add some spice, tagged service can be defined with priority. And we can specify that this processor should be run at the beginning, and that at the end.

We’ll start with defining common processor interface and some basic implementations.

Now it’s time for a service that processes given argument with all the processors one by one.

We could define typical container definitions and pass processors right into processing service, but remember about requirement that external bundles can define their own processors. We’ll use tags.

Now the key part: compiler pass definition.

Usage:

At the first sight you may think that it’s a lot of logic to run to define stupid processor. What about performance? No worries. Remember, the compilation outcome is dumped into cache file on prod environment. All these foreach loops and priority queues are being run only once. Solution is pretty generic, you can easily adapt to your own needs. Of course code is on MIT license, so grab it and use in your own (even commercial) projects!

Happy PHP container compiling :-)

Autor wpisu: batman, dodany: 10.09.2015 19:48, tagi: php

W ostatnim projekcie, nad którym mi przyszło pracować, potrzebowałem parsować oraz zapisywać pliki CSV. Pierwsze co zrobiłem, to przeszukałem packagist.org i mimo znalezienia co najmniej kilkunastu paczek, nie byłem z nich zadowolony. Wszystkie znalezione paczki można określić jednym słowem – toporne. Ja potrzebowałem czegoś prostego, co można dodać do projektu i korzystać bez zagłębiania się w dokumentację. I tak narodził się pomysł napisania prostej paczki do zapisywania i odczytywania plików CSV. Aby skorzystać z paczki, należy ją wpierw zainstalować. W tym celu skorzystamy z... [[ This is a content summary only. Visit my website for full links, other content, and more! ]]
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.