Hướng dẫn dùng netreturn trong PHP

Câu lệnh return dùng để trả về giá trị từ hàm hay phương thức. PHP cho phép hàm có thể trả về bất kỳ giá trị gì, bảo gồm cả đối tượng cũng như mảng. Khi đó tất cả các câu lệnh phía sau return sẽ đều bị bỏ qua và hàm sẽ kết thúc việc thực thi.

Lưu ý:

Nếu không có câu lệnh return thì hàm sẽ trả về giá trị NULL.

Sử dụng return

Ví dụ 1: Cách sử dụng return.


function square($num)
{
    return 
$num $num;
}
echo 
square(4);   // in ra: 16
?>

Một hàm không thể trả về nhiều hơn một giá trị, nhưng ta có thể thay thế bằng việc cho nó trả về một mảng.

Ví dụ 2: Trả về một mảng.


function small_numbers()
{
    return array (
012);
}
list (
$zero$one$two) = small_numbers();
?>

Để trả về một tham chiếu từ hàm thì ta sử dụng toán tử tham chiếu & trong cả phần định nghĩa hàm và khi gọi hàm.

Ví dụ 3: Trả về tham chiếu từ hàm.


function &returns_reference()
{
    return 
$someref;
}

$newref =& returns_reference();
?>

Các khai báo kiểu trả về

PHP 7 bổ sung tính năng hỗ trợ khai báo kiểu trả về. Tương tự như khai báo kiểu đối số, khai báo kiểu trả về sẽ xác định kiểu của giá trị sẽ trả về từ hàm. Các kiểu giống nhau sẽ sẽ cho phép khai báo kiểu trả về trong phần đối số của khai báo.

Kiểu strict của được phép áp dụng khai báo kiểu trả về. Theo cách thông thường thì giá trị trả về sẽ được ép sang kiểu mong muốn nếu nó không cùng kiểu. Còn trong trường hợp định kiểu mạnh thì giá trị trả về phải có kiểu đúng, nếu không lỗi TypeError sẽ được ném.

Lưu ý:

Khi ghi đè một phương thức của lớp cha thì phương thức của lớp con phải tương thích với khai báo kiểu trả về của lớp cha. Nếu ở phương thức của lớp cha không khai báo kiểu trả về thì phương thức của lớp con cũng có thể làm như vậy.

Ví dụ 4: Khai báo kiểu trả về cơ bản


function sum($a$b): float {
    return 
$a $b;
}

// Lưu ý rằng một số thực sẽ được trả về.
var_dump(sum(12));
?>

Đoạn mã trên sẽ in ra:

float(3)

Ví dụ 5: Chế độ strick


declare(strict_types=1);

function

sum($a$b): int {
    return 
$a $b;
}

var_dump(sum(12));
var_dump(sum(12.5));
?>

Ví dụ trên sẽ in ra:

int(3)

Fatal error: Uncaught TypeError: Return value of sum() must be of the type integer, float returned in - on line 5 in -:5
Stack trace:
#0 -(9): sum(1, 2.5)
#1 {main}
  thrown in - on line 5

Ví dụ 6: Trả về một đối tượng.


class {}

function

getC(): {
    return new 
C;
}

var_dump(getC());
?>

Ví dụ trên sẽ in ra: