I was super excited when I found a couple of free hours to finally sit down with Laravel and kick off my little blog project. That two hour time box turned out to be pretty important to this effort. I hit up puphpet.com to get a quick-and-dirty little debian development server running and loaded up the Laravel quick start. Unfortunately I glossed over the very clear instructions about the necessary permissions for the app/storage path and lost about 10 minutes trying to figure out why I was white screening, but from the moment I sat down to the point where I had a functioning skeleton installed totaled maybe 20 or 25 minutes. I started in on my first goal, a simple database-backed authentication system.
I won’t go in to details on a topic as well-trod as that, but I think it speaks extremely highly of Laravel’s approachability that I was able to build out a reasonably rich authentication system in a little more than an hour, including command-line tools to provision and manage users. I’ve worked in a number of PHP frameworks large and small, from Codeigniter, Fuel, and Yii to Zend and Symfony, but I have never felt as immediately productive in any of them as I did sitting down with Laravel. That alone goes a huge way to explaining how this framework has managed to enchant such a huge segment of the greater PHP community. The prospect of the drop-in structure of a framework without the steep learning curve is incredibly alluring.
Almost alluring enough to offset some of the things that I wasn’t quite as comfortable with. I want to say, I went in to this determined to give facades a fair shot but they didn’t make a great impression. I am the kind of person who likes to know what’s going on under the hood and facades seemed determined to get in my way. I don’t like feeling frustrated trying to find how something is implemented, and I found myself in that position a handful of times during this first exposure and it left a definite bad taste in my mouth. Maybe it’s just my lack of familiarity with the framework, or maybe as a python dev, I just have a bias towards the explicit over the implicit, but if it weren’t for the fact that facades are optional, I think my experiment might have ended right then and there.
So, the takeaway from my first brush with Laravel is that it’s a very welcoming piece of technology that invites you to step in and immediately start creating stuff, which is awesome. I’d love for the non-facade style to have a more prominent place in the docs. The idea is explained very succinctly by Taylor Otwell himself on his personal blog, but I think it would do a lot to quell some of the criticism– not to mention, make the framework a bit more welcoming to people, like me, who just reflexively distrust “magic”– if the DIC itself were more visibly in the docs.
Next session I’ll be building my content management back-end and wiring up mongo. I’m really looking forward to doing some real work with Laravel at last!