2 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
凭感觉猜测题主是需要一个简洁的分发,那么可以考虑phpclassApp{protectedstatic$actions=[1=>'onProfile',2=>'onLogin',//...];publicfunctionrun($command){if(!isset(self::$actions[$command])){throw...;}$callback=[$this,self::$actions[$command]];if(!is_callable($callback)){throw...;}call_user_func($callable);}}//index.phpnewApp()->run($_GET['command']);
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
先指出一点错误,一般检测类似controller这种类方法是否可以被调用,需要使用is_callable而不是method_exists,前者检查方法是否可以被调用(存在且公开),后者只是单纯检查方法是否存在。classNotFoundExceptionextendsException{}$command=$_GET['command']?:false;$actions=array('profile','login','show','update','stop','start','remove',);//判断命令对应的动作是否存在if(!in_array($command,$actions))thrownewNotFoundException();$control=newApp();$method='on'.ucfirst($command);//判断类里面是否存在该函数if(!is_callable(array($control,$method)))thrownewNotFoundException();
添加回答
举报
0/150
提交
取消