So during my adventures in software development land, I’ve come across a lot of cool technologies and great products, many of which don’t exist in the PHP world for a variety of perfectly valid reasons. This is basically my personal PHP project wishlist that I’d love to tackle if I had a year or more off of work and didn’t have to worry about paying bills 😉
I love programming in PHP. It’s fun, and it’s easy. Sure there are pitfalls (the builtin function api is clearly patched together from numerous contributors and points of view), but it’s widely deployed, it works, and it’s free! So please, before you tell me, “why Russ, you ninny, you can do that already in language X, Y, or Z” for these ideas, I don’t care, heh. I am well aware of that fact. However, if you know of an existing project or product that already does any of these, please let me know! 🙂
PHP Application Server
I pretty much exclusively program in OOP PHP. It’s great to me. But one thing that always bothers me is that all of my objects are instantiated and destroyed on every page request, over and over and over again. Seems fairly wasteful (and yet I still do it, heh).
I know there are existing solutions (some caching products) and hacks (cramming serialized objects into the $_SESSION space), but what I want is a good old fashion application server, much like the Tomcat’s, JBoss’, and WebSphere’s of the J2EE world. Something that creates a formal definition of a “PHP Application” in terms of its state and memory management, etc. But I don’t want something that requires me to do any extra sort of “compile” steps (I wouldn’t be programming in PHP if I wanted a compile-like step!) nor is too rigid.
Dynamic Mock Framework
My current employer is a strong follower of TDD (test driven design), so we use all kinds of state of the art products to enable us to write better tests, faster. One of the tools I’ve recently fallen in love with at work is dynamic mocks in my tests, specifically the Rhino Mocks implementation.
This might be tricky in PHP, given that the language is dynamically typed, but you never know, it could work. Mocking gives you an incredibly powerful and flexible way of writing unit tests and really helps shape and evolve your software design.
I’ll probably add to this as I think up more 🙂