2011-11-28 108 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"; 
    } 
?> 
相關問題