After starting at my current job, which is in a company where almost everything is done with Microsoft technologies, I haven’t been coding much PHP. In my previous job I was developing the Finnish Facebook equivalent IRC-Galleria for 4 years. IRC-Galleria is PHP based, but since the codebase was started in 2000, the framework was self-built.
So basically I haven’t ever used any common PHP frameworks that much. I’ve done some projects with ASP.NET MVC framework which I’ve liked a lot. And I’ve done two freelancing projects using Symfony, which I didn’t like that much since it seemed really heavy and hard to get in to. I’ve tried CodeIgniter in some of my smaller projects and kinda liked it.
Now I was starting a new freelancing project for a custom online store and at the same time ran across PhalconPHP which kinda intrigued me. It seemed to lack all the things I’ve misliked in Symfony and partly in CodeIgniter. Everything seems to named simply and to my liking, for example controllers extend
class Controller not
CI_Controller. PHP5 namespaces are used appropriately. And the whole basic idea about the framework running as an extension instead of million PHP files just makes sense.
Their website and documentation seemed nice and even though there’s not that much previous user experience to search for, I was pretty confident that my skills are enough to get through obstacles. First I started developing for Phalcon 1.2.3, which is the current stable version, but I quickly updated to 1.3.0 branch which is still in development.
Here’s the TL;DR: I would NOT suggest using PhalconPHP for any production environment.
Don’t get me wrong, I really like Phalcon. There’s a lot of good things in it, but it’s simply not ready yet. There’s some elementary framework bugs still laying around, for example missing output escaping in some components. After reporting these bugs, there was a fix made quickly, but this fix caused another component to do double escaping. View inheritance has two ways of doing it, both missing some of the good in the other. The framework has ACL but no built-in components for user authorization or controller/action level access control although these are fairly easy to build yourself. So there’s still this kind of hard edges to sand through.
One big issue, which I was expecting from the start, was missing and unclear documentation. It seems that the documentation and code samples have been made too early and there’s been changes for later versions which haven’t been updated to the documentation. And since the framework is an extension, you can’t just easily browse through the framework code to find out what tools you have and how they work. Unless you know C of course, which I don’t.
For this project I’m seriously thinking about ditching Phalcon and doing it with CodeIgniter. Not quite sure yet whether to push forward or to bail out and go for the safe solution. Even if I do change now, I’m most definitely going to come back to PhalconPHP after it gets a bit more ready.