<?php /* 法一: $arr = array('+' => 'add','-' => 'plus','*' => 'mul'); function add($a,$b) { return $a+$b; } function plus($a,$b) { return $a-$b; } function mul($a,$b) { return $a*$b; } echo $arr['+'](2,3); echo $arr['-'](2,3); echo $arr['*'](2,3);*/ abstract class operate { abstract public function getvalue($a,$b); } class add extends operate { public function getvalue($a,$b) { return $a+$b; } } class jian extends operate { public function getvalue($a,$b) { return $a-$b; } } class chen extends operate { public function getvalue($a,$b) { return $a*$b; } } class chu extends operate { public function getvalue($a,$b) { return $a/$b; } } class factory { public static function oper($str) { switch($str) { case '+': return new add(); break; case '-': return new jian(); break; case '*': return new chen(); break; case '/': return new chu(); break; } } } echo factory::oper('-')->getvalue(10,8);