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


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.