PHP Advanced Functions (অ্যাডভান্সড ফাংশন ) PHP ভেরিয়েবল ফাংশন (Variable functions ) Estimated reading: 2 minutes 9 views Contributors সারাংশ: এই টিউটোরিয়ালে, আপনি PHP ভেরিয়েবল ফাংশন সম্পর্কে শিখবেন এবং কীভাবে তাতে একটি ফাংশনে কল করতে হয়, তা শিখবেন। অবজেক্টের মেথড এবং ক্লাসের স্টাটিক মেথড সম্পর্কেও শিখবেন। PHP ভেরিয়েবল ফাংশন-এর পরিচিতি:- ভেরিয়েবল ফাংশন আপনাকে ফাংশনের মতো একটি ভেরিয়েবল ব্যবহার করতে দেয়। আপনি যখন একটি ভেরিয়েবলের সাথে parentheses () আরোপ করবেন, তখন PHP সেই ফাংশন সন্ধান করে সম্পাদন করবে যার মান ভেরিয়েবলের মানের সমান। উদাহরণ স্বরূপ:<?php $f = 'strlen'; echo $f('Hello');আউটপুট: 5কিভাবে এটা কাজ করে.প্রথমে, একটি variable $f ডিফাইন করুন এবং এর ভেল্যু কে 'strlen' আক্ষরিখ স্ট্রিং-এ শুরু করুন। দ্বিতীয়ত, এটিতে 'Hello' স্ট্রিং দিয়ে একটি ফাংশন হিসাবে $f ব্যবহার করুন।যখন PHP $f() দেখে, তখন এটি strlen() ফাংশন সন্ধান করে। যেহেতু strlen() একটি বিল্ট ইন ফাংশন তাই PHP এটিকে কল করে। যদি PHP ফাংশনের নাম খুঁজে না পায় তাহলে এটি একটি এ্যারর প্রদান করবে। উদাহরণ স্বরূপ:<?php $f = 'len'; echo $f('Hello');Error:Fatal error: Uncaught Error: Call to undefined function len() in index.php:5এই উদাহরণে, যেহেতু PHP len() ফাংশন খুঁজে পায় না, এটি একটি এ্যারর জারি করে। ভেরিয়েবল ফাংশন-এর আরো উদাহরণ চলুন ভেরিয়েবল ফাংশন ব্যবহারের কিছু উদাহরণ নেওয়া যাক। ১) ভেরিয়েবল ফাংশন ব্যবহার করে একটি মেথড কল করা ভেরিয়েবল ফাংশন আপনাকে একটি object-এর মেথড কল করার অনুমতি দেয়। ভেরিয়েবল ফাংশন ব্যবহার করে একটি মেথড কল করার জন্য সিনট্যাক্স নিম্নরূপ: $this->$variable($arguments)লক্ষ্য করুন যে, আপনাকে ভেরিয়েবলের নাম $ সাইন-এর সাথে প্রিফিক্স করতে হবে। এই ক্ষেত্রে, এই কীওয়ার্ড এবং ভেরিয়েবল নাম-এর আগে আপনার কাছে $ সাইন থাকবে। উদাহরণ স্বরূপ: <?php class Str { private $s; public function __construct(string $s) { $this->s = $s; } public function lower() { return mb_strtolower($this->s, 'UTF-8'); } public function upper() { return mb_strtoupper($this->s, 'UTF-8'); } public function title() { return mb_convert_case($this->s, MB_CASE_TITLE, 'UTF-8'); } public function convert(string $format) { if (!in_array($format, ['lower', 'upper', 'title'])) { throw new Exception('The format is not supported.'); } return $this->$format(); } }কিভাবে এটা কাজ করে:প্রথমে, একটি Str ক্লাস ডিফাইন করুন যেখানে একটি স্ট্রিংকে লওয়ারকেস, আপারকেস, এবং টাইটল কেস ক্ষেত্রে রূপান্তর করার জন্য তিনটি মেথড রয়েছে। দ্বিতীয়ত, convert() মেথড ডিফাইন করুন যা একটি স্ট্রিং গ্রহণ করে। format আর্গুমেন্ট যদি মেথড-এর নামের মধ্যে একটি না হয়: লওয়ার, আপার, এবং টাইটল, convert() মেথড একটি ব্যাতিক্রম তৈরি করবে। অন্যথায়, এটি সংশ্লিষ্ট পদ্ধতিকে lower(), upper() অথবা title() কল করবে।.নিচে দেখানো হয়েছে কিভাবে Str ক্লাসের convert() মেথড ব্যবহার করতে হয়:<?php require_once 'Str.php'; $str = new Str('Hello there'); echo $str->convert('title');আউটপুট:Hello There২) ভেরিয়েবল ফাংশন ব্যবহার করে একটি স্টাটিক মেথড কল করা নিম্নলিখিত উদাহরণ একটি স্টাটিক মেথড কল করার জন্য একটি ভেরিয়েবল ফাংশন ব্যবহার করে:<?php class Str { private $s; public function __construct(string $s) { $this->s = $s; } public function __toString() { return $this->s; } public static function compare(Str $s1, Str $s2) { return strcmp($s1, $s2); } } Str ক্লাসের একটি কনস্ট্রাক্টর আছে যেটি একটি স্ট্রিং গ্রহণ করে। এটি toString() মেথড প্রয়োগ করে যা Str ইনস্ট্যান্সকে একটি স্ট্রিং-এ রূপান্তর করে। Str ক্লাসে compare() স্টাটিক মেথড রয়েছে যা Str ক্লাসের দুটি উদাহরণের compare করে। একটি ভেরিয়েবল ফাংশন ব্যবহার করে compare() স্টাটিক মেথড-এ কল করতে, আপনি নিম্নলিখিত কোড ব্যবহার করেন: $str1 = new Str('Hi'); $str2 = new Str('Hi'); $action = 'compare'; echo Str::$action($str1, $str2); // 0সারসংক্ষেপএকটি ভেরিয়েবলের নামের সাথে parentheses () যুক্ত করুন যে ফাংশনকে কল করার জন্য যার নাম ভেরিয়েবলের মানের সাথে একই। ক্লাসের মেথড কল করতে $this->$variable() ব্যবহার করুন। একটি ক্লাসের স্টাটিক মেথড কল করতে className::$variable() ব্যবহার করুন। PHP Advanced Functions (অ্যাডভান্সড ফাংশন ) - Previous PHP অ্যারো ফাংশন (Arrow functions)