对该公司以前的项目进行维护,编写该项目的人员已经离开,现在我需要维护,但是现在该项目使用了很多“ goto”,我想知道如何阅读它。 删除“ goto”语句后如何排序,使人们更容易理解。简而言之,我想将左侧的凌乱代码格式化为图片中的右侧
//**this code
defined('IN_IA') or exit('Access Denied');
class Md_daojiaModuleSite extends WeModuleSite
{
public function doPageUploadmap3()
{
goto A25dm;
ADcuT:
ZLMND:
goto wJ44l;
z_M2Z:
if (empty($_FILES["file"]["tmp_name"])) {
goto ZLMND;
}
goto RnW8Z;
M61ng:
$tempfile = ATTACHMENT_ROOT . "/audios/" . $name;
goto ReGaV;
A25dm:
global $_GPC, $_W;
goto z_M2Z;
RnW8Z:
$exname = strtolower(substr($_FILES["file"]["name"], strrpos($_FILES["file"]["name"], ".") + 1));
goto BO3TT;
wJ44l:
return $this->result(0, '', "attachment/audios/" . $name);
goto Qx8PP;
BO3TT:
$name = md5(time()) . "." . $exname;
goto M61ng;
ReGaV:
move_uploaded_file($_FILES["file"]["tmp_name"], $tempfile);
goto ADcuT;
Qx8PP:
}
}
答案 0 :(得分:1)
您基本上只是复制了口译员会做的事情:
从上至下,查看每个goto
语句。
goto A25dm;
…
将相应的跳转标记和代码段直接拖到其后面。
A25dm: # ← MARKER: starts section
global $_GPC, $_W;
goto z_M2Z; # ← next goto ends it
所以您最终得到了:
//goto A25dm; # → no longer needed
A25dm:
global $_GPC, $_W;
goto z_M2Z; # → proceed with step 1
将每个marker:
关联到goto
之后,只需删除或注释掉它们即可。