How to learn ফাংশন (Function) | SP Foundationbd

এটা হচ্ছে একটা নাম যেটা আমি কোনো কোডব্লককে দিতে পারি এবং পরে সেই নাম ধরে ডেকে ঐ কোডব্লককে ইচ্ছেমত execution করাতে পারি।এটা পিএইচপি এর মূল শক্তি বলতে পারেন।প্রায় ১০০০ এরও বেশি বিল্ট ইন Function আছে php তে।

একটা Function কে যখন কল করা হয় তখনই এটা execute হয় আর পেজের যেকোনো জায়গা থেকে একটা Function কে কল করা যায়।

সংকেত

function functionName()

{

code to be executed;

}

টিপস:ফাংশনের নাম দেয়ার সময় এমন নাম দিন যেটা দেখেই যেন বোঝা যায় Function টি কি করবে।

ফাংশনের নাম অক্ষর বা _ দিয়ে শুরু হতে পারে,নাম্বার দিয়ে শুরু হবেনা।

একটা simple function যেটা দিয়ে আমার নাম লিখব

<?php

function writeName()

{

echo "Md.Shahab uddin";

}

echo "My name is ";

writeName();

?>

Output

My name is Md. Shahab uddin

 

writeName()Function টি পরে কল করা হয়েছে এর আগে function টি তৈরী বা define  করেছি,তবে ইচ্ছে করলে Function টি আগে কল করতে পারেন এরপর Function টি লিখতে পারেন।যেমন

<?php

echo "My name is ";

writeName();

function writeName()

{

echo "Md.Rejoanul Alam";

}

?>

আউটপুট উপরের মতই আসবে

My name is Md. Shahab uddin

                                                                        Page-2

ফাংশনে প্যারামিটার যোগ করা

ফাংশনে প্যারামিটার যোগ করে আরও ফাংশনালিটি বাড়ানো যায়,এটা একদম PHP variable এর মতই।ফাংশনের নাম লেখার পর এটা ব্রাকেটের ভিতর লেখা হয়।যেমন

<?php

function writeName($fname){

echo $fname . " Uddin.<br />";

}echo "My name is ";

writeName("Shahab ");

echo "My Father's name is ";

writeName("Samad");

echo "My brother's name is ";

writeName("Anjirul");

?>

Output

My name is Shahab uddin.
My Father's name is Samad uddin.
My brother's name is Anjirul uddin.

একটা ফাংশনে একাধিক প্যারমিটার যোগ করতে পারেন যেমন

<?php

function aCalculation($firstNumber, $secondNumber){

$total = $firstNumber + $secondNumber;

echo "Result is  $total<br />";

}

aCalculation(5,6);

aCalculation(10,20);

aCalculation(8,9);

?>

output

Result is 11
Result is 30
Result is 17

এখানে aCalculation(5,6) তে ৫ এবং ৬ হচ্ছে Argument ।Function টিতে দুটি প্যারামিটার (variable) আছে তাই প্রতিবার function টি call করার সময় দুটি করে মান পাঠিয়েছি।যদি একটা মান পাঠানো হত তাহলে missing argument  এধরনের এরর দেখাবে।

function call করার সময় এভাবে সরাসরি মান না দিয়ে variable দিতে পারেন।যেমন

<?php

function aCalculation($firstNumber, $secondNumber){

$total = $firstNumber + $secondNumber;

echo "Result is  $total<br />";

}

$argument1 = 6;

$argument2 =10;

aCalculation($argument1,$argument2);

?>

আউটপুট:

Result is 16

প্যারামিটারের ডিফল্ট মান ঠিক করে দিতে পারেন।যেমন $secondNumber= 20।যে প্যারামিটারের default মান ঠিক করে দিবেন সেটা অবশ্যই শেষে থাকতে হবে।

<?php

function aCalculation($firstNumber, $secondNumber = 20){

$total = $firstNumber + $secondNumber;

echo "Result is  $total<br />";

}

aCalculation(100);

?>

Output

Result is 120

তবে যদি aCalculation (100,50) এভাবে পাঠান তাহলে Output ১৫০ আসবে অর্থ্যাৎ কোন মান না দিলে তখন default মান টি ব্যবহৃত হবে।প্যারামিটারের default মান variable বা এধরনের কিছু দেয়া যাবেনা, static মানই দিতে হবে যেমন একটা সংখ্যা।

যাইহোক এভাবে আর্গুমেন্ট পাঠানো এটাকে বলে মান দিয়ে আর্গুমেন্ট পাঠানো (passing argument by value) এছাড়া আরো একভাবে আর্গুমেন্ট পাঠানো যায় এটাকে বলে রেফারেন্স দিয়ে argument পাঠানো (passing argument by reference) যেমন

<?php

$cost = 100;

$vat = 0.15;

function calculatePrice(&$cost, $vat)

{

$cost = $cost + ($cost * $vat);

$vat+= 4;

}

calculatePrice($cost, $vat);

printf("Vat is %06.2f%% ", $vat*100);

printf("Cost is: $%07.2f", $cost);

?>

Output

Vat is 015.00% Cost is: $0115.00

 

কখনও আপনি এটা চাইতে পারেন যে,একটা ফাংশনের ভিতর Argument এর পরিবর্তন করবেন আর এটার প্রভাব ফাংশনের বাইরে গিয়ে পরবে।তখন এভাবে প্যারামিটার (ভেরিয়েবল) এর সামনে & (ampersand) চিহ্ন দিয়ে পিএইচপি কে বুঝাতে হবে।

 

আর reference ছাড়া (& বাদ দিয়ে) কোডব্লকটি রান করান Output অন্যরকম আসবে।যখনি কোন প্যারামিটারের সামনে & দিবেন তখন php ইন্জিন ফাংশনের ভিতরে গিয়ে ঐ ভেরিয়েবলটি খুজবে এবং ভিতরে যদি এমন code পায় যেটা সেই প্যারামিটারকে পরিবর্তন করেছে তাহলে এই পরিবর্তিত মানটি এখন বাইরে এর আসল মান হয়ে যাবে।যেমন $cost এর মান প্রথমে ১০০ এরপর ফাংশনের ভিতরে এটার মান পরিবর্তন হয়ে গেছে আর্থ্যাৎ $cost = 100+(100*0.15) এইটা।$vat এর সামনে & নেই তাই ফাংশনের ভিতরে এর মান পরিবর্তন করাতেও php  ইন্জিন এটা ধরেনাই বরং ০.১৫ output দিয়েছে।&$vat এভাবে দিয়ে দেখুন এটাও পরিবর্তন হবে।

                                                                        Page-3

 

একটা ফাংশনের value return করতে return statement ব্যাবহার করতে হয়।যেমন

<?php

function add($x,$y){

$total=$x+$y;

return $total;

}

echo "1 + 16 = " . add(1,16);

?>

একটা function থেকে একাধিক মান রিটার্ন করতে পারেন। এক্ষেত্রে list() constract ব্যবহার করে করতে পারেন যেমন

<?php

function spfoundationbdTutorial(){

$quality[] = "Informative site";

$quality[] = "Easy to Understand";

$quality[] = "easy to navigate";

return $quality;

}

list($info1,$info2,$info3) = spfoundationbdTutorial();

echo "Spfoundationbd is $info1,$info2,$info3";

?>

list যখন execute হবে তখন spfoundationbd Tutorial() ফাংশনটির return কৃত মানগুলি যথাক্রমে $info1, $info2 এবং $info3 ভেরিয়েবলে ঢুকে যাবে।

Output Spfoundationbd is Informative site,Easy to Understand,easy to navigate

**সব programing ল্যাগুয়েজের ফাংশনের মুল concept একই।