ShrimPHP is a project I started to practice the Test Driven Development skills I have been gathering. I figured I'd do a framework because while I have plenty of experience interacting with Zend, CodeIgniter and things of the sort; writing your own routing classes, controllers and view classes help to clarify those concepts a little bit more.
I know the last thing that the eco-system needs is another framework, there are great frameworks out there and they should be used if they fit the needs you have. Personally, I've run into situations where I start prototyping and all I really need is logic/presentation separation. Using Zend FW is overkill for what I need; so I've made this to keep everything really basic. Don't view this as an attempt to change the world, just an attempt to understand it a little bit more. Once something gets beyond the prototype stage, I'd be forced with the decision to add on to this or use a more mature framework.
As I mentioned, I started this project as a way to practice to Test Driven Development. So I started writing my tests based on what I wanted the code to do and then simply made my code do it. What excites me about that is that even in the areas where I made faulty assumptions, I have the tests in place. As the assumptions change, I can change the tests to help prevent technical debt from creeping in.
I wrote all my unit tests for PHPUnit and practiced the very meticulous process of writing a test line, testing, writing code for that line, testing and continuing that process over and over. To avoid tightly coupling the components, I made use of the dependency injection to manage all the dependencies. This prevents a class from creating other objects by instantiating them within a method. As you may have noticed, I also got Selenium up and running yesterday, so I'll be writing the integration tests that I need using PHPUnit_Selenium.
As I mentioned, I'm certainly not trying to change the world; but I am looking for feedback on the way I did certain things. This project has been a learning experience and what better way to learn than to get feedback from other really smart developers? Feedback on how I wrote my tests, the strategy I used in certain areas of the codebase or things that I got sloppy with all come to mind. So if you've got a few minutes to spare; I'd love to hear what you think. ShrimPHP on Github