Patterns: Abstract Factory in PHP