<?php

namespace Build;

class Forma
{
	public static function getForma($forma, $area)
	{
		switch($forma):
			case 'circulo';
				return new Circulo($area);
			case 'quadrado':
				return new Quadrado($area);
			default:
				return new stdClass();			
		endswitch;	
	}
	public function getArea()
	{
		// return get_class($this)
		return $this->getArea();
	}
}

class Circulo extends Forma 
{
	private $area;
	public function __construct($area)
	{
		$this->area = $area;
	}
	public function getArea(){
		return M_PI * ($this->area)**2;
	}
}

class Quadrado extends Forma 
{
	private $area;
	public function __construct($area)
	{
		$this->area = $area;
	}
	public function getArea()
	{
		return ($this->area)**2;
	}
}

$forma = \Build\Forma::getForma('circulo', 3);
print $forma->getArea();
print "<br/>";
$forma = \Build\Forma::getForma('quadrado', 4);
print $forma->getArea();
print "<br/>";

?>