PHP 函数中的 return 语句后的代码

Posted

技术标签:

【中文标题】PHP 函数中的 return 语句后的代码【英文标题】:Code after a return statement in a PHP function 【发布时间】:2011-09-22 14:47:30 【问题描述】:

我正在使用/在一个非常过时的网站上工作,我不会把我的名字放在上面。现有代码中似乎有一种重新出现的模式,大致如下:

function foo() 
    $a = 'a';
    $b = 'b';

    return;

    $c = 'c';
    $d = 'd';

我非常不愿意从我没有编写的函数中删除现有代码,并且一切都按原样运行。但我想知道为什么?

我所学到的一切(除了 goto 行调用)都告诉我 return 语句后面的代码是无用的。是吗?为什么以前的程序员会这样做?

【问题讨论】:

是的。也许他在测试什么。 我很感激有必要找出以前的开发人员为什么会做一些令人费解和愚蠢的事情。我们常常发现自己只是耸耸肩继续前进……直到几周后我们忘记了自己做了什么。 干杯 - 我知道对吗?在那个项目中,我捂脸的次数太疯狂了 【参考方案1】:

return语句下面的代码没用,不会被执行。

【讨论】:

【参考方案2】:

return 语句之后的代码永远不会被执行。很可能最初的开发人员想快速测试变量的其他值,并将他的旧实验留在函数中。使用版本控制,您可以删除现有代码并恢复它以防您再次需要它

【讨论】:

感谢您的确认 - 测试很可能是其背后的原因。版本控制是一个好点,可能是我需要开始研究的东西,只是还没有遇到负担得起的私人服务 @chris:负担得起的私人服务?使用 dvcs(例如 git 或 mercurial),两者都是开源软件。它们还允许您在本地拥有版本历史记录,而无需服务器 我在想你需要通过 github、googlecode 或类似的方式 @chris:不,你没有。这些系统是分布式的,并且可以在单个 pc 上运行(即使没有互联网),但您需要设置自己的服务器(或使用网络上的任何服务) 只是提一下。 Try-catch-finally 和返回后的代码可以执行(php 5.5+)【参考方案3】:

我的第一个想法是编写代码的人最初添加了 return 因为它之后的代码不再需要运行,但由于某种原因不想删除其他代码。

可能出现这种情况的一个例子是作者重写了代码以以不同的方式实现它。他们将新实现放在 return 语句之上,但将代码留在它下面,以便它作为过去如何完成的“参考”。这样,如果他们意识到新代码中的某些内容无法正常工作,他们就可以轻松查看旧代码。

诚然,版本控制和单元测试使这变得不那么有用了,但无论如何,这并不罕见。

【讨论】:

以上是关于PHP 函数中的 return 语句后的代码的主要内容,如果未能解决你的问题,请参考以下文章

php学习笔记-return语句

javascript中return语句后的代码是啥意思?

java基础之异常——try{}里面有一个return语句,那么紧跟在try后的return语句还会执行吗?什么时候执行,在return前还是后?

try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后?

js 函数总结

Java中,finally在try语句块中的return前执行还是后执行