{"id":1943,"date":"2015-01-12T09:35:01","date_gmt":"2015-01-12T15:35:01","guid":{"rendered":"http:\/\/www.mooreds.com\/wordpress\/?p=1943"},"modified":"2014-12-30T10:23:52","modified_gmt":"2014-12-30T16:23:52","slug":"symfony2-impressions","status":"publish","type":"post","link":"https:\/\/www.mooreds.com\/wordpress\/archives\/1943","title":{"rendered":"Symfony2 Impressions"},"content":{"rendered":"<figure style=\"width: 150px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" title=\"violin scroll by mitch98000\" src=\"http:\/\/www.mooreds.com\/wordpress\/wp-content\/uploads\/2014\/12\/3320576686_9d2af76c82_q_violin.jpg\" alt=\"violin photo\" width=\"150\" height=\"150\" \/><figcaption class=\"wp-caption-text\"><small>Photo by <a href=\"http:\/\/www.flickr.com\/photos\/72528195@N00\/3320576686\" target=\"_blank\">mitch98000<\/a> <a title=\"Attribution License\" href=\"http:\/\/creativecommons.org\/licenses\/by\/2.0\/\" target=\"_blank\" rel=\"nofollow\"><img decoding=\"async\" src=\"http:\/\/www.mooreds.com\/wordpress\/wp-content\/plugins\/wp-inject\/images\/cc.png\" alt=\"\" \/><\/a><\/small><\/figcaption><\/figure>\n<p>Recently, I had a short engagement for a client who had an existing application written in <a href=\"http:\/\/symfony.com\/\">Symfony2<\/a>.\u00a0 I haven&#8217;t really touched the modern PHP frameworks (the most recent experience was CakePHP 1.2, which was last released <a href=\"https:\/\/github.com\/cakephp\/cakephp\/releases?after=1.3.16\">almost 3 years ago<\/a>).\u00a0 It was a pleasant surprise.<\/p>\n<p>What was awesome about Symfony?<\/p>\n<ul>\n<li>It forces you to think in terms of components (called bundles).\u00a0 Even the core functionality is a bundle.<\/li>\n<li>There are <a href=\"https:\/\/github.com\/search?utf8=%E2%9C%93&amp;q=symfony2+bundle&amp;type=Repositories&amp;ref=searchresults\">many bundles<\/a> out there to let you get up to speed quickly.<\/li>\n<li>It uses <a href=\"https:\/\/getcomposer.org\/\">Composer<\/a>, a dependency management tool much like Maven or NPM, to manage packages.<\/li>\n<li>The documentation is <a href=\"http:\/\/symfony.com\/doc\/2.6\/book\/index.html\">extensive<\/a> and <a href=\"http:\/\/symfony.com\/doc\/2.4\/book\/index.html\">versioned<\/a>.<\/li>\n<li>There is a <a href=\"http:\/\/symfony.com\/roadmap\">clear product roadmap<\/a>, including long term releases and clear deprecation dates<\/li>\n<li>It has built in <a href=\"http:\/\/symfony.com\/doc\/current\/best_practices\/tests.html\">integration testing functionality<\/a>, which lets you test clicks and form submissions and search the DOM for expected results.<\/li>\n<li>There is <a href=\"http:\/\/symfony.com\/doc\/current\/best_practices\/configuration.html\">clear configuration support<\/a> for different environments.<\/li>\n<li>It uses an <a href=\"http:\/\/www.doctrine-project.org\/\">ORM<\/a> which seems capable&#8211;I didn&#8217;t get to dive into this too much.<\/li>\n<\/ul>\n<p>Of course, the proof is in the pudding, and I didn&#8217;t get a chance to live with this solution for more than a few weeks.\u00a0 I don&#8217;t know how active the community is, though the <a href=\"https:\/\/groups.google.com\/forum\/#!forum\/symfony2\">google group<\/a> seems relatively active.\u00a0 I&#8217;m sure there are warts in Symfony2&#8211;searching for &#8216;symfony2 sucks&#8217; turned up a few rants.\u00a0 But, for a greenfield webapp project, I&#8217;d happily use Symfony2.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently, I had a short engagement for a client who had an existing application written in Symfony2.\u00a0 I haven&#8217;t really touched the modern PHP frameworks (the most recent experience was [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,20],"tags":[],"class_list":["post-1943","post","type-post","status-publish","format-standard","hentry","category-php","category-web-applications"],"_links":{"self":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/1943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/comments?post=1943"}],"version-history":[{"count":1,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/1943\/revisions"}],"predecessor-version":[{"id":1948,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/1943\/revisions\/1948"}],"wp:attachment":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/media?parent=1943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/categories?post=1943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/tags?post=1943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}