কম্পিউটার

পিএইচপি ফাংশন আর্গুমেন্ট


পরিচয়

পিএইচপি-তে একটি ফাংশনকে আর্গুমেন্ট আকারে কলিং পরিবেশ/স্ক্রিপ্ট থেকে ইনপুট গ্রহণ করার জন্য সংজ্ঞায়িত করা যেতে পারে। এই আর্গুমেন্টগুলি ফাংশনের নামের সামনে বন্ধনীর ভিতরে কমা বিভক্ত তালিকা হিসাবে দেওয়া হয়। মনে রাখবেন যে একটি ফাংশন কল করার সময়, এটিতে একই সংখ্যক আর্গুমেন্ট পাস করতে হবে।

PHP মান, রেফারেন্স, ডিফল্ট মান সহ আর্গুমেন্ট পাস করে এবং ভেরিয়েবল নম্বর আর্গুমেন্ট পাস করে একটি ফাংশন কল করা সমর্থন করে।

আর্গুমেন্ট সহ ফাংশন

নিম্নলিখিত উদাহরণে, একটি ফাংশন দুটি আনুষ্ঠানিক আর্গুমেন্ট দিয়ে সংজ্ঞায়িত করা হয়। যখন এই ফাংশনটিকে ভ্যালু দিয়ে আর্গুমেন্ট পাস করে কল করা হয়। ফাংশনের আর্গুমেন্ট তার স্থানীয় ভেরিয়েবলে পরিণত হয়। তাই, একটি ফাংশনের ভিতরে আর্গুমেন্টের মানের কোন পরিবর্তন এর বাইরে প্রতিফলিত হয় না।

এখানে, $x-এর মান ফাংশনের ভিতরে পরিবর্তিত হয়েছে, কিন্তু কল টু ফাংশনের পরে যদি আমরা এর মান পরীক্ষা করি, তবে এটি পরিবর্তিত হয়নি

উদাহরণ

<?php
function add($x, $y){
   $x= $x+$y ;
   echo $x . "\n";
}
$x=10;
$y=20;
add($x,$y);
//outside function $x has previous value.
echo $x;
?>

আউটপুট

এটি নিম্নলিখিত ফলাফল তৈরি করবে। −

30
10

ফাংশনে অ্যারে পাস করা

নিম্নলিখিত উদাহরণে, add() ফাংশন আর্গুমেন্ট হিসাবে অ্যারে গ্রহণ করার জন্য সংজ্ঞায়িত করা হয়েছে। ফাংশনের ভিতরে, অ্যারের উপাদানগুলিকে ফোরচ লুপ ব্যবহার করে ট্র্যাভার্স করা হয়

উদাহরণ

<?php
function add($arr){
   $sum=0;
   foreach ($arr as $i){
      $sum+=$i;
   }
   echo "sum = " .$sum;
}
add(array(1,2,3));
?>

আউটপুট

এটি নিম্নলিখিত ফলাফল তৈরি করবে। −

sum = 6

রেফারেন্স দ্বারা আর্গুমেন্ট পাস করা

মান একটি ফাংশন এর আর্গুমেন্ট মান দ্বারা পাস করা হয়. তাই, ফাংশনের ভিতরে আর্গুমেন্টের মানের পরিবর্তন এর বাইরে প্রতিফলিত হয় না। যখন যুক্তিগুলি রেফারেন্স দ্বারা পাস করা হয়, তখন পরিবর্তনগুলি যুক্তির মানের বাইরে বহন করা হয়৷

রেফারেন্স দ্বারা মান পেতে, আর্গুমেন্টের নাম অবশ্যই $ চিহ্ন দ্বারা প্রিফিক্স করা উচিত

উদাহরণ

<?php
function swap(&$x, &$y){
   $t=$x;
   $x=$y;
   $y=$t;
   echo "inside function x=$x y=$y\n";
}
$x=5;
$y=7;
echo "before calling function x=$x y=$y\n";
swap($x, $y);
echo "after calling function x=$x y=$y\n";
?>

আউটপুট

এটি নিম্নলিখিত ফলাফল তৈরি করবে। −

before calling function x=5 y=7
inside function x=7 y=5
after calling function x=7 y=5

$x এবং $y ভেরিয়েবলের মান swap() ফাংশনে বিনিময় করা হয়। যেহেতু, ভেরিয়েবলগুলি রেফারেন্স দ্বারা পাস করা হয়, ভেরিয়েবলগুলি ফাংশনের বাইরেও পরিবর্তিত মানগুলি দেখায়

টাইপ ইঙ্গিত (প্রকার ঘোষণা)

পিএইচপি আসলে একটি গতিশীল টাইপ করা ভাষা। তাই, একটি ভেরিয়েবলকে তার প্রকারের সাথে ঘোষণা করার প্রয়োজন নেই (যেমন C/C++ বা জাভাতে)। যাইহোক, ফাংশনে আর্গুমেন্টের টাইপ ডিক্লেয়ারেশন পার্সারকে ফাংশনে পাস করা ভুল ডেটা টাইপ সনাক্ত করতে দেয়।

সিনট্যাক্স

//define a function with type hints
function myfunction(type $arg1, type $arg2){
   ..
   ..
}

স্কেলার টাইপ, অ্যারে, ক্লাস/ইন্টারফেস, পুনরাবৃত্তিযোগ্য এবং অবজেক্ট সহ সমস্ত স্ট্যান্ডার্ড পিএইচপি ডেটা প্রকারগুলি একটি ফাংশন ঘোষণায় টাইপ ইঙ্গিত প্রদানের জন্য বৈধ প্রকার

উদাহরণ

<?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 (int $x, int $y){
   $z=$x+$y;
   echo "addition=$z\n";
}
add(10,20);
add(5.55, 6.66);
?>

আউটপুট

এটি নিম্নলিখিত ফলাফল তৈরি করবে। −

addition=30
addition=11

উল্লেখ্য যে দ্বিতীয় কল to add() ফাংশনে, ফ্লোটগুলি আর্গুমেন্ট হিসাবে দেওয়া হয়, তবে এখনও কোনও ত্রুটি/সতর্কতা প্রদর্শন করা হয় না। এর কারণ হল পিএইচপি অভ্যন্তরীণভাবে যোগ করার জন্য পূর্ণসংখ্যায় ভাসতে বাধ্য করে। এই ধরনের স্বয়ংক্রিয় টাইপ রূপান্তর প্রতিরোধ করার জন্য, ডিক্লেয়ার ব্যবহার করুন strict_types=1 দিয়ে তৈরি করুন

উদাহরণ

<?php
declare(strict_types=1);
function add (int $x, int $y){
   $z=$x+$y;
   echo "addition=$z\n";
}
add(10,20);
add(5.55, 6.66);
?>

যোগ করার জন্য দ্বিতীয় কল ফাংশন এখন ব্যতিক্রম −

নিক্ষেপ করবে

আউটপুট

addition=30
PHP Fatal error: Uncaught TypeError: Argument 1 passed to add() must be of the type integer, float given

  1. পিএইচপি mt_getrandmax() ফাংশন

  2. পিএইচপি মিনিট() ফাংশন

  3. পিএইচপি সর্বোচ্চ() ফাংশন

  4. PHP log10() ফাংশন