বেনামে ফাংশনে পিএইচপি ভেরিয়েবল


119

আমি পিএইচপি-তে বেনামে ফাংশন নিয়ে খেলছিলাম এবং বুঝতে পেরেছিলাম যে তারা তাদের বাইরে ভেরিয়েবলের কাছে পৌঁছায় না। এই সমস্যাটি পেতে কোনও উপায় আছে কি?

উদাহরণ:

$variable = "nothing";

functionName($someArgument, function() {
  $variable = "something";
});

echo $variable;  //output: "nothing"

এটি "কিছুই না" আউটপুট হবে। বেনামে ফাংশনটি অ্যাক্সেস করতে পারে এমন কোনও উপায় আছে $variable?

উত্তর:


277

হ্যাঁ, একটি বন্ধ ব্যবহার করুন :

functionName($someArgument, function() use(&$variable) {
  $variable = "something";
});

নোট করুন যে $variableআপনার বেনামি ফাংশনের সুযোগের বাইরে পরিবর্তিত মানটি সংশোধন করতে এবং পুনরুদ্ধার করতে সক্ষম হবার জন্য এটি অবশ্যই বন্ধ করে রেফারেন্স করতে হবে &


এটা নতুন! এটি সিনট্যাক্স যা পিএইচপি 5.3-এ নতুন।
রকেট হাজমাত

1
@ রকেট সুতরাং, নিখুঁতভাবে বলতে গেলে সত্যিকারের বেনামে ফাংশন সিনট্যাক্স (এর বিপরীতে create_function()) এবংuse শব্দটি একই ডক পৃষ্ঠায় নথিভুক্ত করা হয়েছে (খারাপভাবে) যা তাদের বর্ণনা করে।
ডেভর্যান্ডম

4
তাদের জন্য দ্রুত নোট যারা চেনেন না: আপনি ড্রপ করতে পারেন &যখন একটি বস্তু ক্ষণস্থায়ী, যেহেতু তারা সবসময় রেফারেন্স দ্বারা গৃহীত হয় ... এবং আপনার টাইপ-ইঙ্গিতটি ভুলবেন না :) যেমন:function() use (PDO $pdo) {
keyboardSmasher

@ অ্যালিসওয়েল না, এটি কেবলমাত্র বস্তুর জন্য, অন্যথায় আপনার পরিবর্তনশীল পরিবর্তন করতে আপনাকে রেফারেন্স দিয়ে যেতে হবে। এই উদাহরণটি দেখুন
নিকব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.