A problem which has cropped up numerous times in projects I've worked on is that of testing code which uses the current time, or some variant thereof, such as an audit logger for example. Consider the following code: class Logger { function log($message) { $logRecord = new LogRecord(); $logRecord->setTime(new \DateTime());......