class Circle { public void draw() { print("Circle\n"); } } class Square { public void draw() { print("Square\n"); } } class Program { object ShapeFactoryMethod(string $shape) { switch ($shape) { case "Circle": return new Circle(); case "Square": return new Square(); } } public void main() { $this->ShapeFactoryMethod("Circle")->draw(); $this->ShapeFactoryMethod("Square")->draw(); } }