Who am I? • Software Engineer at Mashery (now Intel) • Symfony developer since 2007 • Community Evangelist Jacob Mather @thejmather Tuesday, June 18, 13
My style • Little bits of info about lots of things • Exposure makes things less scary • Mental references for solving roadblocks Jacob Mather @thejmather Tuesday, June 18, 13
Composer • Resolves and manages dependency trees in your library code • NOT JUST FOR SYMFONY • Seriously. Use it everywhere. • Worried about 3rd parties? Use Satis Jacob Mather @thejmather Tuesday, June 18, 13
Design Patterns • Read up on these, as they play a major part in understanding and working with Symfony • SOLID object oriented design • Dependency Injection • Proxy Jacob Mather @thejmather Tuesday, June 18, 13
Ramp up easier with Silex • Same great components • No enterprisey after-taste • Micro-framework based on Pimple Jacob Mather @thejmather Tuesday, June 18, 13
Twig is REALLY COOL • Object oriented templates • Based on Jinja and Django templates • Templates literally compile to classes • Twig.js lets you use them in JavaScript too Jacob Mather @thejmather Tuesday, June 18, 13
Stop fighting with local dev • Vagrant is your friend • Puppet (or Chef) make Vagrant awesome • Get started right away: https://github.com/jmather/vagrant-lamp-centos63 Jacob Mather @thejmather Tuesday, June 18, 13
Admin Generator • SonataAdminBundle - Defacto Standard • Get started quickly: https://github.com/jmather/symfony-sonata-distribution Jacob Mather @thejmather Tuesday, June 18, 13
Testing is easy • Symfony encourages building testable code • Unit test all the things • Test all your non-javascript code headlessly • Without even making a request! Jacob Mather @thejmather Tuesday, June 18, 13
ICBaseTestBundle • Helps speed up your functional tests by retaining copies of your sqlite based testing databases. • Provides helpful tools for managing fixture loading. Jacob Mather @thejmather Tuesday, June 18, 13
JMSSerializerBundle • Useful once you have an API • Lets you version your data objects with your API to keep from breaking older implementations Jacob Mather @thejmather Tuesday, June 18, 13
Community • If you need help, you can often find it online • Google Groups • Mailing Lists • IRC (#symfony on Freenode, MY FAV!) Jacob Mather @thejmather Tuesday, June 18, 13
Code Organization • You will likely feel like you need to shuffle deck chairs around • There are conventions, take some time and study other bundles and examples • It’s ok, nobody puts everything in the right place the first time. Or the 10th. 50th? Jacob Mather @thejmather Tuesday, June 18, 13
The Components • Console - Great for building CLI helpers • HttpKernel - Build your own framework • EventDispatcher - Build evented systems • DependencyInjector - Awesome DIC Jacob Mather @thejmather Tuesday, June 18, 13
Configuration Component • Config system isn’t merely for moving config from a file to code • Configuration Component allows you to define the structure of your config, alerting you of potentially invalid entries Jacob Mather @thejmather Tuesday, June 18, 13
Security Component • Often said to be “overly complicated” • Is actually just solving a really complicated set of problems • Security is actually two things: • Authentication - who you are • Authorization - what you can do Jacob Mather @thejmather Tuesday, June 18, 13
Form Component • Manages to solve a complex problem in an abstract way which strives to not break layer isolation between model, view, and controller Jacob Mather @thejmather Tuesday, June 18, 13