为了账号安全,请及时绑定邮箱和手机立即绑定

如何更优雅的写这段代码

如何更优雅的写这段代码

小唯快跑啊 2019-04-16 20:27:32
查看完整描述

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.php
newApp()->run($_GET['command']);
                            
查看完整回答
反对 回复 2019-04-16
?
犯罪嫌疑人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();
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 359 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信