'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) { // রেফারেন্স দিয়ে ইনহেরিট 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-এর মান রিসেট করা হয় এবং আবার ইনহেরিট করা হয়। যেহেতু রুট/প্যারেন্ট স্কোপে মান পরিবর্তন হয়েছিল, তাই ফাংশন কল করার সময় পরিবর্তনগুলো প্রতিফলিত হয়।