Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Truy cập biến từ phạm vi cha trong hàm ẩn danh PHP


Từ khóa 'use' có thể dùng để ràng buộc biến vào phạm vi của hàm cụ thể.

Dùng từ khóa use để ràng buộc biến vào phạm vi hàm:

Ví dụ

<?php 
$message = 'hello there'; 
$example = function () { 
    var_dump($message); 
}; 
$example(); 
$example = function () use ($message) { // Kế thừa $message 
    var_dump($message); 
}; 
$example(); // Giá trị biến kế thừa từ khi hàm định nghĩa, không phải khi gọi 
$message = 'Inherited value'; 
$example(); 
$message = 'reset to hello'; // reset message 
$example = function () use (&$message) { // Kế thừa bằng tham chiếu 
    var_dump($message); 
}; 
$example(); // Giá trị thay đổi trong phạm vi cha 
// được phản ánh bên trong lời gọi hàm 
$message = 'change reflected in parent scope'; 
$example(); 
$example("hello message"); 
?>

Kết quả

NULL string(11) "hello there" string(11) "hello there" string(14) "reset to hello" string(32) "change reflected in parent scope" string(32) "change reflected in parent scope"

Ban đầu, hàm 'example' được gọi lần đầu. Lần thứ hai, $message được kế thừa, và giá trị thay đổi khi hàm được định nghĩa. Giá trị $message được reset và kế thừa lại. Vì giá trị thay đổi trong phạm vi gốc/cha, thay đổi được phản ánh khi hàm được gọi.