Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

เข้าถึงตัวแปรจากขอบเขตพาเรนต์ในฟังก์ชันแอนโนนิมัส PHP


คีย์เวิร์ด 'use' สามารถใช้เพื่อผูกตัวแปรเข้าไปในขอบเขตของฟังก์ชันเฉพาะนั้น

ใช้คีย์เวิร์ด use เพื่อผูกตัวแปรเข้าไปในขอบเขตของฟังก์ชัน:

ตัวอย่าง

<?php $message = 'hello there'; $example = function () {    var_dump($message); }; $example(); $example = function () use ($message) { // สืบทอด $message    var_dump($message); }; $example(); // ค่าของตัวแปรที่สืบทอดมาจากตอนที่ฟังก์ชันถูกกำหนด ไม่ใช่ตอนเรียก $message = 'Inherited value'; $example(); $message = 'reset to hello'; // รีเซ็ต message $example = function () use (&$message) { // สืบทอดแบบ reference    var_dump($message); }; $example(); // ค่าที่เปลี่ยนในขอบเขตพาเรนต์ // สะท้อนภายในการเรียกฟังก์ชัน $message = 'change reflected in parent scope'; $example(); $example("hello message"); ?>

ผลลัพธ์

จะได้ผลลัพธ์ดังนี้:

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"

ต้นฉบับ ฟังก์ชัน 'example' ถูกเรียกครั้งแรก ครั้งที่สอง $message ถูกสืบทอด และค่าเปลี่ยนเมื่อฟังก์ชันถูกกำหนด ค่า $message ถูกรีเซ็ตและสืบทอดอีกครั้ง เนื่องจากค่าเปลี่ยนในขอบเขตราก/พาเรนต์ การเปลี่ยนแปลงสะท้อนเมื่อฟังก์ชันถูกเรียก