//图像接口 interface img{ public function getWidth(); public function getHeight(); public function getData(); } //png图像处理 class Img_PNG implements img{ private $width, $height, $data; public function __construct($file){ $this->file = $file; $this->parse(); } public function parse(){ echo '这里对png格式图形进行处理<br>'; } public function getWidth(){ return $this->width; } public function getHeight(){ return $this->height; } public function getData(){ return $this->data; } } //jpeg图像处理 class Img_JPEG implements img{ private $width, $height, $data; public function __construct($file){ $this->file = $file; $this->parse(); } public function parse(){ echo '这里对JPEG格式图形进行处理<br>'; } public function getWidth(){ return $this->width; } public function getHeight(){ return $this->height; } public function getData(){ return $this->data; } } //图像工厂 class ImgFactory{ public static function factory($file) { $pathParts = pathinfo($file); $ext = strtolower($pathParts['extension']); switch($ext) { case 'png': $ret = new Img_PNG($file); break; case 'jpeg': case 'jpg': $ret = new Img_JPEG($file); break; default: return false; } if ($ret instanceof Img) { return $ret; } else { return false; } } } $img1 = ImgFactory::factory('ab/cc/aa.png'); $img2 = ImgFactory::factory('ab/cc/aa.jpeg'); $img3 = ImgFactory::factory('ab/cc/aa.jpg'); $img3 = ImgFactory::factory('ab/cc/aa.aaa');