在PHP中切换case语句

Jay*_*kat 0 php

我正在学习PHP.我从网站下载了一个开源项目,并查看该项目中每个模块的工作流程.我注意到一个我不熟悉的开关盒.

switch ($value) {
        case 'student':
        case StudentClass::getInstance()->getId();
            return new StudentClass();
            break;
        case 'teacher':
        case TeacherClass::getInstance()->getId();
            return new TeacherClass();
            break;
        default:
            break;
    }
Run Code Online (Sandbox Code Playgroud)

上面的补丁就是我的样子.当我提供输入时:

$value = 'student';
Run Code Online (Sandbox Code Playgroud)

它返回StudentClass实例.

如果我给

$value = 'teacher';
Run Code Online (Sandbox Code Playgroud)

然后它返回TeacherClass实例.

如果有人解释这个流程,那么对我更好地理解PHP将会有所帮助

eli*_*ide 5

你的字符串cases没有break或没有return语句,所以它们"落到"下一个case.此外,你的breaks在这里没有任何用处.

我已经在您的代码中添加了注释来解释发生了什么.

switch ($value) {
        case 'student': // keeps going with next line
        case StudentClass::getInstance()->getId();
            return new StudentClass(); // handles both cases above
            break; // unnecessary because of the return above
        case 'teacher': // keeps going with next line
        case TeacherClass::getInstance()->getId();
            return new TeacherClass(); // handles both cases above
            break; // unnecessary because of the return above
        default:
            break; // pointless, but handles anything not already handled
}
Run Code Online (Sandbox Code Playgroud)

此外,PHP明确允许在a ;之后使用分号()case,但通常不被认为是好的样式.来自文档:

案例后可以使用分号而不是冒号...