This article is targeted to technical leads who may be hiring me for contracting or perm roles, as a Symfony specialist. Firstly as a technical person, I'm sure you are aware of the difference between using MVC (and related algorithms), and using Symfony2+. I have used MVC type (see MVP, MVVM etc) algorithms since my second year at Uni, in 2000. I have used Swing, AWT, java Servlets, Zend framework2, Catalyst, Symfony3 and Symfony2. At mIS I wrote event libraries which where similar to MVC (for XML, no View is needed, but had Models, Transformers and Controllers), and again for other processing, which was more Model and Presenter structures.

I have been using Symfony stack for five years, but to list features:

  • Twig
  • Regionalised twig e.g. translation layers, and different templates for different locales; twig from strings, twig blocks etc
  • doctrine2 (or PDO/ NoSQL? integrations if is this seems better to the solution)
  • Composer for installation/ updates. I have created fairly complex composer.json installers
  • The Symfony form libraries,
  • The Symfony input validators
  • Symfony Session class
  • Correct HTTP codes for REST
  • Using DI via Containers and services.yml
  • The Transformer interfaces
  • Symfony events, creation and consumption
  • Monolog
  • Assetic server side asset caching / Uglify
  • Varnish front side caching
  • For relevant situations, I write Console modules
  • REST via FOS REST bundle
  • Injection of headers, for example for CORs, or server controlled compression
  • user Identification and Authentication via security bundle, JWT, Oauth
  • Custom authentication libraries
  • The basic MVC [...]
  • The DI configuration and structure / adding new Factories

Obviously as a professional, I use the following standard technologies:

  • Unit testing e.g. PHPunit for many years (and qunit, junit, test::more etc)
  • Controllers can be unit tested via WebClientTest? classes (part of Symfony)
  • When BDD is supported as a process, I use Behat/mink/goutte/php stack, and behat/mink/selenuim stack. I prefer the headless test where possible, as they run faster.
  • Version control, GIT preferred, SVN
  • Caching: memcached, (or SHM directly), or more complex technologies like RabbitMQ?
  • PHP optimisers: APC, Zend optimiser
  • JS libraries such as jquery
  • build/ deploy tools e.g. Jenkins, Puppet (I have also written a list of custom ones)
  • Docbook to $X, for man pages, info pages, wiki pages etc
  • phpdoc, phpdocumenter and related technologies
  • IDE: PHPStorm, Netbeans or Eclipse and vim as default.
  • Various db interface tools. I prefer to store Schema with the code in the VCS
  • For the above XML, I built a regression tester for transaction level testing (this is similar to BDD for pure machine readable systems).