width=$width; $this->height=$height; } public function getArea(){ return $this->width*$this->height; } public function getCircumference(){ return 2*$this->width+2*$this->height; } } /** * 圆 */ class circle implements InterfaceShape{ private $redius; public function __construct($redius){ $this->redius = $redius; } public function getArea(){ return M_PI*pow($this->redius,2); } public function getCircumference(){ return M*PI*2*$this->redius; } } class FactoryShape{//func_get_arg(索引)返回当前函数指定索引的参数值,返回string格式; static public function create(){ switch (func_num_args()) { case 1: return new circle(func_get_arg(0)); case 2: return new Rectangle(func_get_arg(0),func_get_arg(1)); default: break; } } } $rect = FactoryShape::create(5,5); var_dump($rect); echo ""; $circle = FactoryShape::create(4); var_dump($circle); ?>