Php 什么';‘return;’之间的区别是什么没有回报?
以下两者之间是否有区别:Php 什么';‘return;’之间的区别是什么没有回报?,php,function,methods,return-value,Php,Function,Methods,Return Value,以下两者之间是否有区别: function someMethod( $someArg ) { // some code return; } 及 两者都将NULL作为“返回值”。有区别吗?什么是PHP内部的?演出速度 编辑 我问,因为在Zend框架()中,他们使用return 只要调用了return,函数调用就会终止。这就像是一次休息。因此,如果您的返回在中间,它将获得一些性能,因为其余的函数未被执行。 对于其余部分,使用显式返回而不是隐式返回通常更好(在可读性方面)。如果将返回值保留在
function someMethod( $someArg ) {
// some code
return;
}
及
两者都将NULL
作为“返回值”。有区别吗?什么是PHP内部的?演出速度
编辑我问,因为在Zend框架()中,他们使用
return这对我来说似乎很愚蠢。但是,您可能会认为Zend framework的幕后人员确实了解他们的PHP…据我所知,这没有什么区别
空返回
主要用于从if/else、while或for循环中中断,而不返回任何内容。在您的示例中,没有区别
但是,return
将终止函数,因此您可以选择在return
语句之后跳过代码(这就是它的用途)
在您的示例中,如果您希望看到返回值
,这是个人的偏好
此外,在一些语言(如Perl)中,最后一个表达式是“隐式”返回值,因此您甚至不需要使用“return”。(这在其他语言如C++中是行不通的)但是< /P>
只要调用了return
,函数调用就会终止。这就像是一次休息。因此,如果您的返回在中间,它将获得一些性能,因为其余的函数未被执行。
对于其余部分,使用显式返回而不是隐式返回通常更好(在可读性方面)。如果将返回值保留在函数中,您将知道对该函数的调用可能会期望返回值。没有重大区别,您可以使用return
提前中断函数调用。无论哪种方式,它们都将返回NULL
,这是严格用于工作流的。功能上没有区别,但在函数中有一个明显的退出点(返回点)总是很好的。一些计算机科学学院认为所有的函数和方法都应该有一个精确的出口,而且只有一个出口
如果您将来需要添加一个返回值,那么如果您包含一个空的返回值,那么代码中有一个明显的点已经为您选定
但正如我所说,从功能的角度来看,没有太大的区别 我不是专家,但我会说,如果两者之间的差异可以忽略不计;有人可能会争辩说,你通过放回音来消耗被咬的东西;或返回错误;在函数的末尾
通常我使用return加上
return true;
或
如果我不想返回任何东西,或者我想返回false,我只是不在PHP和Python等语言中使用return<代码>返回代码>可用于过早中断函数
但是,当选择的编程语言是C/C++、Java、C#时,会有一个区别,其中不返回表示void
返回将中断/退出函数(将中断视为开关/案例)
php代码
<?php
function a() {
echo 1;
return;
}
function b() {
echo 2;
}
因此显式return语句生成一条额外的返回指令。否则没有区别。我有时喜欢使用“empty”return
作为函数的最后一条语句,友好地提醒函数不应该返回任何值
class foo {
var $name;
public function bar($x) {
$this->name = $x;
return;
}
}
在ADA中,您有过程
和函数
。第一个不返回任何数据,它们只执行一些语句。这些函数可以返回数据
因此,一个空的返回将类似于“这是一个过程”。非常有趣的是(我认为),有一个返回类型会有很大的不同。三种类型的返回null
会抛出三种不同的错误:
function foo() : string {
// return nothing
// TypeError exception: Return value of foo() must be of the type string, none returned
}
function foo() : string {
return;
// Fatal error: A function with return type must return a value
}
function foo() : string {
return null;
// TypeError exception: Return value of foo() must be of the type string, null returned
}
我不会猜到,因为所有错误都是运行时的,所有返回值在技术上都是null
,我可能是错的,因为我对perl语法不太清楚,但是foo和foo2不会返回相同的值。foo返回的值为12,其中foo2在Perl中不返回任何内容,返回值是“上次计算的表达式”的值,因此两者都将返回相同的内容。(奇怪,但那是Perl;-)但是return
和返回false代码>非常不同。是的,它们返回将返回null和false;将返回false;我不明白你的意思是什么?你说:“如果我不想返回任何东西或者我想返回false,我就不使用return。”。如果你想返回false,你应该返回一些东西:false
。是的,但是作为布尔值计算,即true或false null与false是一样的,不是吗?是的,我们都知道它是。但我在我的回答中寻找细节。没关系。我们都知道我们的意思。局部返回值”
,NULL
和FALSE
将执行非常不同的操作。其他时候,他们做的完全一样。这正是我的意思。我可以用return
对性能没有好处,因为它添加了额外的命令。如果没有返回如果指定了code>,则仍然在内部指定了一个返回。我读对了吗?@Rudie:不,没有更糟,因为只执行了第一个returnnull
。但即使是这样,你也不会注意到区别。不要过早地优化。@Marcel,这就是为什么我没有说它更糟糕,但“对性能来说并不更好”。我不是想优化,只是好奇而已。我听说这很好。@Marcel-@stereofrog是正确的。性能差异是可以忽略的,可以认为是零,因为第二次返回甚至不会执行。第二次返回可能不会执行,但可能会发生额外的解析等情况。仅仅因为有些东西很小,并不意味着你应该忽略它。如果您只是遵循省略不必要的返回语句的实践(最佳实践???),就不能教条地称这种过早优化
也表示空白,不是吗?null
,未定义的
或无
。我可能是疯了
function someMethod( $someArg ) {
if(condition) {
return; // will exit function
}
// could be more code
}
<?php
function a() {
echo 1;
return;
}
function b() {
echo 2;
}
.FUNCTION a
ECHO 1
RETURN NULL
RETURN NULL
HANDLE_EXCEPTION
.END FUNCTION
.FUNCTION b
ECHO 2
RETURN NULL
HANDLE_EXCEPTION
.END FUNCTION
class foo {
var $name;
public function bar($x) {
$this->name = $x;
return;
}
}
function foo() : string {
// return nothing
// TypeError exception: Return value of foo() must be of the type string, none returned
}
function foo() : string {
return;
// Fatal error: A function with return type must return a value
}
function foo() : string {
return null;
// TypeError exception: Return value of foo() must be of the type string, null returned
}