একটি ফাংশন লজিকের একটি অংশ প্যাকেজ করে, যাতে সেটা আবার টাইপ না করে নাম দিয়ে পুনঃব্যবহার করা যায় — প্রোগ্রামিং পরিচিতি-তে শেখা একই ধারণা, PHP-এর সিনট্যাক্সে।
<?php
function greet($name) {
return "Hello, $name!";
}
echo greet("Priya"); // "Hello, Priya!"
?><?php
function greet($name = "Guest") {
return "Hello, $name!";
}
echo greet(); // "Hello, Guest!"
echo greet("Amit"); // "Hello, Amit!"
?>PHP আপনাকে ঐচ্ছিকভাবে প্যারামিটার আর রিটার্ন টাইপ ঘোষণা করতে দেয় — বাধ্যতামূলক নয়, কিন্তু ভুল আগেই ধরার জন্য একটি ভালো অভ্যাস:
<?php
function add(int $a, int $b): int {
return $a + $b;
}
echo add(2, 3); // 5
// add("two", 3); // TypeError — "two" cannot be coerced to an int
?>PHP ফাংশন সরাসরি শুধু একটি মান রিটার্ন করে, কিন্তু সেই মানটি একটি অ্যারে হতে পারে — একসাথে একাধিক সম্পর্কিত ডেটা ফেরত পাঠানোর একটি সাধারণ উপায়:
<?php
function minMax(array $numbers): array {
return ["min" => min($numbers), "max" => max($numbers)];
}
$result = minMax([4, 9, 1, 7]);
echo $result["min"] . " / " . $result["max"]; // "1 / 9"
?>ছোট, একক-এক্সপ্রেশন ফাংশনের জন্য একটি সংক্ষিপ্ত সিনট্যাক্স — Array Functions পাঠে array_map() আর array_filter()-এ আপনি এগুলো আগেই দেখেছেন:
<?php
$double = fn($n) => $n * 2;
echo $double(5); // 10
?>fn বনাম একটি anonymous ফাংশন
একটি অ্যারো ফাংশন (fn) স্বয়ংক্রিয়ভাবে চারপাশের scope-এর ভ্যারিয়েবলে অ্যাক্সেস পায়, স্পষ্টভাবে import করার দরকার ছাড়াই — একটি সাধারণ anonymous ফাংশনে একই কাজের জন্য একটি use (...) ক্লজ লাগে। এটাই এই দুটোর মধ্যে মূল ব্যবহারিক পার্থক্য।