Rapid application development in PHP

For the last few days, I’ve been out of my usual C++ cocoon and working, in stead, on a web app to help me better organize my projects and – more especially – help me better track them.

The way I work is very close to an agile practice called “Scrum” (you might have heard of it: it’s probably the most popular agile methodology Out There) with the addition of Kanbans. There are just a few things in my development cycle that aren’t as well-suited to scrum as I would like them to be – most notably the release cycle.

For the release cycle of any given product, whether it be Funky, Arachnida, Yara, or any of the other products I work on, there are a few steps that are always the same and that aren’t necessarily linked specifically to user stories, use-cases, etc.

So, now i’m working in PHP to build me a web app, called Ginger, to handle this development cycle.

I’m usually not really into GUIs: the only GUI development I do regularly is in Qt. Though I certainly have some PHP under my belt already (not nearly the 20000+ hours of C++ I have behind me, but still…) I spent most of that time on the behind-the-scenes stuff. Now, I have mainly interface stuff to do – and I’m having fun!

Once I set up my use-cases and my database schema, the rest is really a question of setting up the views for my different use-cases. So basically it’s a code-load into browser-code cycle. At fifteen to thirty minutes per feature, this is going really fast – and I still have time to do other things (like preparing the next release for Funky, which doesn’t involve much C++ at the stage it’s in right now either).

I’m using Symfony to develop Ginger and, because I like it, I’ll be using it for a few other web apps as well (I have another web app in the pipe, waiting for approval before I get started on it). I like the way the model is set up, using object-relational mappings to access the database, allowing for code like this:

1
2
3
$c = new Criteria;
$c->add(SprintPeer::ID, $sf_request->getParameter('id'));
$sprint = SprintPeer::doSelectOne($c);

which is all you need to get a sprint from the database. There’s no SQL involved.

Hmm.. I should take a look to see whether that would be possible in C++ 🙂

About rlc

Software Analyst in embedded systems and C++, C and VHDL developer, I specialize in security, communications protocols and time synchronization, and am interested in concurrency, generic meta-programming and functional programming and their practical applications. I take a pragmatic approach to project management, focusing on the management of risk and scope. I have over two decades of experience as a software professional and a background in science.
This entry was posted in PHP, Software Development. Bookmark the permalink.

3 Responses to Rapid application development in PHP

  1. Lord Matt says:

    I have a love hate relationship with SQL. I love how I can arrange a request to make comnplex selects and do allt he heavy lifting. On the other hand I will code myself to death to avoid using it. Generally unless relational data is needed for whatever it is I am doing I consider a relational database to be overkill. It’s a shame that document oriented data storage is not standard with PHP. XML may yet find it’s place in all this.

    • I would tend to agree with you that if you don’t need relations, you don’t need a relational database. When I program in C++ and need to store data – even if I need to store it in a safe & transactional manner – I tend not to use a relational database engine unless I really need it: there are non-relational databases that will suit the purpose of storing data transactionally just fine.

      PHP, however, is part of a LAMP most of the time, and the easiest way you have to store data – relational or not, transactional or not – is to use MySQL. Object-relational mapping, such as provided by Propel, is an added bonus and fits well into this LAMP model where everything is stored in the “M”.

      All that said, the kind of service that Ginger (the application I was writing about) is intended to provide does actually need a relational database and may, when the SaaS end is built, need stored procs to efficiently extract some of the data (and not have complex SELECT statements all over the code).

  2. Pingback: Security Development Lifecycle (SDL) for Agile Development … | DevBlogr

Comments are closed.