পরিচয়
পিএইচপি-তে প্রচুর সংখ্যক অন্তর্নির্মিত ফাংশন রয়েছে যেমন গাণিতিক, স্ট্রিং, তারিখ, অ্যারে ফাংশন ইত্যাদি। নির্দিষ্ট প্রয়োজন অনুযায়ী একটি ফাংশন সংজ্ঞায়িত করাও সম্ভব। এই ধরনের ফাংশনকে ইউজার ডিফাইন্ড ফাংশন বলা হয়।
একটি ফাংশন হল বিবৃতিগুলির একটি পুনঃব্যবহারযোগ্য ব্লক যা একটি নির্দিষ্ট কাজ সম্পাদন করে। এই ব্লকটি ফাংশন কীওয়ার্ড দিয়ে সংজ্ঞায়িত করা হয়েছে এবং একটি নাম দেওয়া হয়েছে যা একটি বর্ণমালা বা আন্ডারস্কোর দিয়ে শুরু হয়। এই ফাংশনটি প্রোগ্রামের মধ্যে যে কোনও জায়গা থেকে যে কোনও বার কল করা যেতে পারে৷
সিনট্যাক্স
//define a function function myfunction($arg1, $arg2, ... $argn) { statement1; statement2; .. .. return $val; } //call function $ret=myfunction($arg1, $arg2, ... $argn);
ফাংশন ঐচ্ছিক কিন্তু যেকোনো সংখ্যক আর্গুমেন্ট দিয়ে সংজ্ঞায়িত করা যেতে পারে। তবে কল করার সময় একই সংখ্যক আর্গুমেন্ট দিতে হবে। ফাংশনের বডিতে যেকোনো বৈধ PHP কোড যেমন কন্ডিশনাল, লুপ ইত্যাদি থাকতে পারে (এমনকি অন্যান্য ফাংশন বা ক্লাসগুলিকে একটি ফাংশনের ভিতরে সংজ্ঞায়িত করা যেতে পারে)। ব্লকে স্টেটমেন্ট এক্সিকিউট করার পর, প্রোগ্রাম কন্ট্রোল সেই অবস্থানে ফিরে যায় যেখান থেকে এটিকে আহ্বান করা হয়েছিল রিটার্ন হিসাবে ফাংশন ব্লকের শেষ স্টেটমেন্টের উপস্থিতি নির্বিশেষে। রিটার্ন স্টেটমেন্টের সামনে একটি অভিব্যক্তি কলিং পরিবেশে তার মান ফিরিয়ে দেয়।
ব্যবহারকারী সংজ্ঞায়িত ফাংশন উদাহরণ
নিম্নলিখিত উদাহরণে একটি usr সংজ্ঞায়িত ফাংশন sayhello()
এর সংজ্ঞা এবং কল দেখায়উদাহরণ
<?php //function definition function sayHello(){ echo "Hello World!"; } //function call sayHello(); ?>
কমান্ড লাইন −
থেকে চালানো হলে এই স্ক্রিপ্ট নিম্নলিখিত ফলাফল তৈরি করবেআউটপুট
Hello World!
আর্গুমেন্ট সহ ফাংশন
নিম্নলিখিত উদাহরণে, একটি ফাংশনকে দুটি আনুষ্ঠানিক আর্গুমেন্ট দিয়ে সংজ্ঞায়িত করা হয়েছে
উদাহরণ
<?php function add($arg1, $arg2){ echo $arg1+$arg2 . "\n"; } add(10,20); add("Hello", "World"); ?>
আউটপুট
এটি নিম্নলিখিত ফলাফল তৈরি করবে। −
30 PHP Warning: A non-numeric value encountered in line 3
দ্বিতীয় কলে, দুটি স্ট্রিং মান ফাংশন আর্গুমেন্ট হিসাবে দেওয়া হয়। যেহেতু পিএইচপি স্ট্রিং এর জন্য + অপারেটর সমর্থন করে না, তাই একটি সতর্কতা নির্গত হয়।
ফাংশন রিটার্ন
নিম্নলিখিত উদাহরণে ব্যবহারকারীর সংজ্ঞায়িত ফাংশন প্রদত্ত আর্গুমেন্ট প্রক্রিয়া করে এবং কলিং পরিবেশে একটি মান ফিরিয়ে দেয়
উদাহরণ
<?php function add($arg1, $arg2){ return $arg1+$arg2; } $val=add(10,20); echo "addition:". $val. "\n"; $val=add("10","20"); echo "addition: $val"; ?>
আউটপুট
এটি নিম্নলিখিত ফলাফল তৈরি করবে। −
addition:30 addition:30
দ্বিতীয় কলে, আর্গুমেন্ট স্ট্রিং হলেও, পিএইচপি সেগুলোকে পূর্ণসংখ্যাতে সমন্বয় করে এবং যোগ করে
ডিফল্ট আর্গুমেন্ট মান সহ ফাংশন
একটি ফাংশন সংজ্ঞায়িত করার সময়, আর্গুমেন্টের একটি ডিফল্ট মান বরাদ্দ করা যেতে পারে। ফাংশন কল করার সময় যদি এই ধরনের যুক্তিতে মান নির্ধারণ করা না হয়, তাহলে এই ডিফল্টটি ফাংশনের ভিতরে প্রক্রিয়াকরণের জন্য ব্যবহার করা হবে। নিম্নলিখিত উদাহরণে, একটি ফাংশন ডিফল্ট মান থাকা যুক্তি দিয়ে সংজ্ঞায়িত করা হয়
উদাহরণ
<?php function welcome($user="Guest"){ echo "Hello $user\n"; } //overrides default welcome("admin"); //uses default welcome(); ?>
আউটপুট
এটি নিম্নলিখিত ফলাফল তৈরি করবে। −
Hello admin Hello Guest
দ্বিতীয় কলে, মান পাস না করে ফাংশন বলা হয়। এই ক্ষেত্রে, ব্যবহারকারীর যুক্তি তার ডিফল্ট মান নেয়।
ভেরিয়েবল সংখ্যার আর্গুমেন্ট সহ ফাংশন
পরিবর্তনশীল সংখ্যার আর্গুমেন্ট পাওয়ার ক্ষমতা সহ একটি ফাংশন সংজ্ঞায়িত করা সম্ভব। ফাংশন সংজ্ঞায় আনুষ্ঠানিক যুক্তির নাম ... দ্বারা উপসর্গযুক্ত টোকেন. নিম্নলিখিত উদাহরণে add() ফাংশন রয়েছে যা আর্গুমেন্ট হিসাবে প্রদত্ত সংখ্যার একটি তালিকা যোগ করে
উদাহরণ
<?php function add(...$numbers){ $ttl=0; foreach ($numbers as $num){ $ttl=$ttl+$num; } return $ttl; } $total=add(10,15,20); echo "total= $total\n"; echo "total=". add(1,2,3,4,5). "\n"; ?>
আউটপুট
এটি নিম্নলিখিত ফলাফল তৈরি করবে। −
total= 45 total=15
func_get_args() এর সাহায্যে একটি ফাংশনে পাস করা আর্গুমেন্টের একটি তালিকা পাওয়াও সম্ভব। ফাংশন পাস করা আর্গুমেন্টের তালিকার প্রতিটি মান অতিক্রম করতে আমরা একটি PHP লুপ চালাতে পারি। সেক্ষেত্রে ফাংশনের সংজ্ঞার কোনো আনুষ্ঠানিক যুক্তি নেই।
উদাহরণ
<?php function add(){ $numbers=func_get_args(); $ttl=0; foreach ($numbers as $num){ $ttl=$ttl+$num; } return $ttl; } $total=add(10,15,20); echo "total= $total\n"; echo "total=". add(1,2,3,4,5). "\n"; ?>
আউটপুট
এটি নিম্নলিখিত ফলাফল তৈরি করবে। −
total= 45 total=15
অন্য ফাংশনের মধ্যে ফাংশন
একটি ফাংশন অন্য ফাংশনের বডি ব্লকের ভিতরে সংজ্ঞায়িত করা যেতে পারে। যাইহোক, বাইরের ফাংশন চালু করার আগে ভিতরের ফাংশন কল করা যাবে না।
উদাহরণ
<?php function hello(){ echo "Hello\n"; function welcome(){ echo "Welcome to TutorialsPoint\n"; } } //welcome(); hello(); welcome(); ?>
hello() এর আগে wlcome() কল করার জন্য মন্তব্যটি সরান। নিম্নলিখিত ত্রুটি বার্তাটি প্রোগ্রামটি বন্ধ করে দেয় -
Fatal error: Uncaught Error: Call to undefined function welcome()
আউটপুট
লাইনটি মন্তব্য করুন এবং আবার চালান
Hello Welcome to TutorialsPoint
পুনরাবৃত্ত ফাংশন
একটি ফাংশন যা নিজেকে কল করে তাকে রিকার্সিভ ফাংশন বলে। নিজেকে নিঃশর্তভাবে কল করা অসীম লুপ তৈরি করে এবং স্ট্যাক পূর্ণ হওয়ার কারণে মেমরির ত্রুটির ফলে। নিম্নলিখিত প্রোগ্রাম ফ্যাক্টোরিয়াল() ফাংশনকে পুনরাবৃত্তভাবে কল করে
উদাহরণ
<?php function factorial($n){ if ($n < 2) { return 1; } else { return ($n * factorial($n-1)); } } echo "factorial(5) = ". factorial(5); ?>
আউটপুট
factorial(5) = 120