2011-11-28 69 views
8

有没有办法让我的PHP函数返回不同的值类型?下面的代码应该解释一下我的意思是:函数可以在PHP中有多个返回值类型吗?

<?php 
public function test($value){ 
    if($value == 1){ 
     return "SUCCESS"; 
    } else { 
     return false; 
    } 
} 
?> 

一个条件,我返回一个字符串,否则,我返回一个布尔值。这是允许/可能的吗?

+0

你尝试了吗? – JJJ

+4

这是不可能的,如果你关心良好的做法:) – Esailija

+1

只因为你*可*不代表你*应*。 – thetaiko

回答

14

是的。 PHP是松散类型的,所以任何变量都可以采用任何类型。函数返回值也不例外。

+1

值得补充的是*许多*本机php功能做到这一点。实际上,该手册将其称为“混合”返回类型。 – goat

+1

@chris即使返回类型没有混合,函数通常会返回指定的返回类型或false/null。所以是的,很常见:) – NikiC

+0

在启用了scrict模式的PHP 7中不可能使用 – PiKey

-3

允许/可能吗?

是的。

0

对,就是允许的,不象在C,Java的,......,在那里你必须定义返回..

0

这是允许的。但是,在你提供的情况下,这是不可取的。举一个例子,这是有道理的,看看例如strpos()功能。

3

是的,这是可能的(但不是可取的)。

你至少应该宣布它在你的Javadoc注释

/** 
* @param int $value 
* @return mixed string|boolean 
**/ 
public function test($value){ 
    if($value == 1){ 
     return "SUCCESS"; 
    } else { 
     return false; 
    } 
} 

即使PHP的内置函数做到这一点有时(例如,的mysql_connect =>布尔|资源链接)

0

我想知道这个自己,为什么返回不同的东西?所以接收端有两件事要检查?我想我已经决定返回一个空的版本的类型或一个状态元素我自己的数组。

两个例子,事情怎么能函数/方法内改变,你基本上是被迫签超过预期:

<?php 
function test($value){ 
if($value == 1){ 
    $local = successFunction($value); 
    return $local; 
} else { 
    return false; 
} 
} 

$res = test(1); 
if ($res) { 
    echo "We are OK ? Right? No? What is this?"; 
} 

版本2

function test($value){ 
if($value == 1){ 
    $local = successFunction($value); 
    return $local; 
} else { 
    return ""; 
} 
} 

$res = test(1); 
    if (!empty($res)) { 
     echo "more likely we are ok"; 
    } 
?> 
相关问题