`return;`和没有回报之间有什么区别?

Rud*_*die 35 php methods function return-value

是否有区别:

function someMethod( $someArg ) {
  // some code
  return;
}
Run Code Online (Sandbox Code Playgroud)

function someMethod( $someArg ) {
  // some code
  // no return
}
Run Code Online (Sandbox Code Playgroud)

两者都具有NULL'回报价值'.有区别吗?PHP内部的东西?性能?速度?

编辑
我问,因为在Zend框架中(在这个视频中)他们使用return;对我来说似乎(似乎)愚蠢.但是,您会认为Zend框架背后的人确实知道他们的PHP ...

use*_*291 40

PHP代码

<?php

function a() {
   echo 1;
   return;
}

function b() {
   echo 2;
}
Run Code Online (Sandbox Code Playgroud)

生成的字节码

.FUNCTION a
        ECHO                     1
        RETURN                   NULL
        RETURN                   NULL
        HANDLE_EXCEPTION         
.END FUNCTION

.FUNCTION b
        ECHO                     2
        RETURN                   NULL
        HANDLE_EXCEPTION         
.END FUNCTION
Run Code Online (Sandbox Code Playgroud)

所以显式return语句会生成一条额外的RETURN指令.否则没有区别.

  • 你用什么来生成这个字节码? (23认同)
  • @Rudie:不,它并不差,因为只执行了第一个`RETURN NULL`.但即便如此,你也不会注意到差异.不要过早优化. (2认同)
  • @Marcel这就是为什么我没有说它更糟,而是“性能并不更好”。我并不是要优化,只是好奇。我听说那很好。 (2认同)

Gam*_*lor 11

据我所知,没有区别.

return;的主要是从if/else,while或for循环中断而不返回任何东西.


Gor*_*onM 5

从功能上来说没有什么区别,但在函数中有一个明显的退出点(返回)总是好的。一些计算机科学流派认为所有函数和方法都应该有 1 个(而且只有 1 个)出口点。

如果您将来需要添加返回值,那么如果您包含空返回值,那么代码中已经为您挑选了一个明显的点。

但正如我所说,从功能角度来看,没有太大区别。