বন্ধ সুন্দর! তারা বেনামে ফাংশন নিয়ে আসা অনেকগুলি সমস্যা সমাধান করে এবং সত্যই মার্জিত কোডটি সম্ভব করে তোলে (কমপক্ষে যতক্ষণ আমরা পিএইচপি সম্পর্কে কথা বলি)।
জাভাস্ক্রিপ্ট প্রোগ্রামাররা সমস্ত সময় ক্লোজার ব্যবহার করে, কখনও কখনও এটি না জেনেও, কারণ সীমাবদ্ধ ভেরিয়েবলগুলি সুস্পষ্টভাবে সংজ্ঞায়িত হয় না - এটিই পিএইচপি-তে "ব্যবহার" "
উপরের উদাহরণগুলির চেয়ে আরও ভাল বাস্তব-বিশ্বের উদাহরণ রয়েছে। আসুন আপনাকে একটি উপ-মান অনুসারে বহুমাত্রিক অ্যারে বাছাই করতে হবে তবে মূল পরিবর্তনগুলি।
<?php
function generateComparisonFunctionForKey($key) {
return function ($left, $right) use ($key) {
if ($left[$key] == $right[$key])
return 0;
else
return ($left[$key] < $right[$key]) ? -1 : 1;
};
}
$myArray = array(
array('name' => 'Alex', 'age' => 70),
array('name' => 'Enrico', 'age' => 25)
);
$sortByName = generateComparisonFunctionForKey('name');
$sortByAge = generateComparisonFunctionForKey('age');
usort($myArray, $sortByName);
usort($myArray, $sortByAge);
?>
সতর্কতা: অরক্ষিত কোড (আমার পিএইচপি 5.3 এটিএম ইনস্টল নেই) তবে এটির মতো দেখতে হবে।
এর একটি খারাপ দিক রয়েছে: আপনি যদি ক্লোজারের সাথে তাদের মুখোমুখি হন তবে অনেকগুলি পিএইচপি বিকাশকারী কিছুটা অসহায় হতে পারেন।
ক্লোজারের চমত্কার বিষয়টিকে আরও বুঝতে, আমি আপনাকে আরও একটি উদাহরণ দেব - এবার জাভাস্ক্রিপ্টে। সমস্যাগুলির মধ্যে একটি হ'ল স্কোপিং এবং ব্রাউজার অন্তর্নিহিত অ্যাসিনক্রোনটি। বিশেষত, যদি এটি window.setTimeout();
(বা-অন্তর্বর্তী) আসে । সুতরাং, আপনি সেট টাইমআউটে একটি ফাংশন পাস, কিন্তু আপনি সত্যিই কোনও পরামিতি দিতে পারবেন না, কারণ পরামিতি সরবরাহ করে কোড কার্যকর করে!
function getFunctionTextInASecond(value) {
return function () {
document.getElementsByName('body')[0].innerHTML = value; // "value" is the bound variable!
}
}
var textToDisplay = prompt('text to show in a second', 'foo bar');
// this returns a function that sets the bodys innerHTML to the prompted value
var myFunction = getFunctionTextInASecond(textToDisplay);
window.setTimeout(myFunction, 1000);
মাই ফাংশন এক ধরণের পূর্বনির্ধারিত প্যারামিটার সহ একটি ফাংশন দেয়!
সত্যি কথা বলতে, আমি পিএইচপি 5.3 এবং বেনামে ফাংশন / বন্ধকরণের থেকে অনেক বেশি পছন্দ করি। নেমস্পেসগুলি আরও গুরুত্বপূর্ণ হতে পারে তবে সেগুলি অনেক কম সেক্সি ।