During the sprint and after talking to some mates, you realize that using a NoSQL strategy could improve the performance of your feature. Redis is one of your best friends. Go for it and show me your Listing 4:
class IdeaController extends Zend_Controller_Action { public function rateAction() { $ideaId = $this->request->getParam('id'); $rating = $this->request->getParam('rating'); $ideaRepository = new RedisIdeaRepository(); $idea = $ideaRepository->find($ideaId); if (!$idea) { throw new Exception('Idea does not exist'); } $idea->addRating($rating); $ideaRepository->update($idea); $this->redirect('/idea/' . $ideaId); } } interface IdeaRepository { // ... } class RedisIdeaRepository implements IdeaRepository { private $client; public function __construct() { $this->client = new Predis\Client(); } ...