2011-11-28 68 views
8

Có cách nào để hàm PHP của tôi trả về một kiểu giá trị khác không? Mã sau đây nên giải thích ý tôi là:Có thể một hàm có nhiều kiểu giá trị trả về trong PHP không?

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

Trên một điều kiện tôi trả về một chuỗi, nếu không tôi sẽ trả về giá trị boolean. Điều đó có được phép/có thể không?

+0

Bạn hãy thử nó? – JJJ

+4

Không thể nếu bạn quan tâm đến các thực hành tốt :) – Esailija

+1

Chỉ vì bạn * có thể * không có nghĩa là bạn * nên *. – thetaiko

Trả lời

14

Có. PHP được nhập sai, vì vậy bất kỳ biến nào cũng có thể lấy bất kỳ loại nào. Các giá trị trả về hàm không phải là ngoại lệ.

+1

Và đáng giá để thêm rằng * nhiều * chức năng gốc php làm điều này. Trên thực tế, hướng dẫn sử dụng gọi đây là kiểu trả về "hỗn hợp". – goat

+1

@chris Và ngay cả khi kiểu trả về không được trộn lẫn, hàm thường trả về kiểu trả về được chỉ định hoặc false/null. Vì vậy, yeah, khá phổ biến :) – NikiC

+0

Nó không thể trong PHP 7 với chế độ chặt chẽ kích hoạt – PiKey

-3

Điều đó có được phép/có thể không?

Đúng.

0

Có, đó là cho phép, không giống như trong C, Java, ..., nơi bạn phải xác định sự trở lại ..

0

Nó được cho phép. Tuy nhiên, nó không được khuyến khích trong trường hợp bạn đưa ra. Ví dụ: điều này có ý nghĩa, hãy xem ví dụ: Chức năng strpos().

3

Có, có thể (nhưng không được khuyến khích).

Bạn ít nhất phải khai báo nó trong bình luận của Javadoc của bạn

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

Thậm chí PHP được xây dựng trong các chức năng làm điều đó đôi khi (ví dụ mysql_connect => boolean | liên kết tài nguyên)

0

Tôi tự hỏi về vấn đề này bản thân mình, tại sao trả lại thứ gì đó khác? Vì vậy, kết thúc nhận được hai điều để kiểm tra? Tôi nghĩ rằng tôi đã quyết định trả về một phiên bản trống của loại hoặc một mảng với một yếu tố trạng thái bản thân mình.

Hai ví dụ, làm thế nào điều này có thể thay đổi trong một hàm/phương pháp, và bạn đang cơ bản buộc phải kiểm tra nhiều hơn mong đợi:

<?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?"; 
} 

phiên bản 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"; 
    } 
?> 
Các vấn đề liên quan