<?php

//PRODUCT
abstract class Product
{
	abstract function getName();
}

class ProductOne extends Product
{
	public function getName(){
		echo "Product One";
	}
}

class ProductTwo
{
	public function getName(){
		echo "Product Two";
	}
}

//CREATOR
abstract class ProductCreator
{
	abstract function getProduct();
}

class ProductOneCreator extends ProductCreator
{	
	public function getProduct(){
		return new ProductOne();
	}
}

class ProductTwoCreator extends ProductCreator
{
	public function getProduct(){
		return new ProductTwo();
	}
}

$creator_one = new ProductOneCreator();
$product_one = $creator_one->getProduct();

$product_one = new ProductOne();