11. Functions (செயல்கூறு)
நிரல் எழுதுவதில் முறைகள் உள்ளது ஒன்று நீளமாக எழுதுவது மற்றொன்று சிறு சிறு துண்டுகளாக பிரித்து எழுதிப் பிறகு தேவையான இடத்தில் சிறிய பகுதிகளை பயன்படுத்திக் கொள்வது அல்லது சிறிய பகுதிகள் அனைத்தையும் சேர்த்து பெரிய நிரலாக மாற்றிக் கொள்வது.
Function (செய்லகூறு) என்றால் என்ன?
PHP யின் உண்மையான பலமே அதனுடைய செயல்கூறில்தான் இருக்கிறது. PHP யில் 1000 build-in functions மேலும் உள்ளது.
செயல்கூறு(function) என்பது கூற்றுகளின்(statements) தொகுதி ஆகும்.
செயல்கூறுகள் வலைப்பக்கம் load ஆகும் போதே தனாக இயங்காது.
செயல்கூறுகளை அழைத்தால் மட்டுமே இயங்கும்.
செயல்கூறை(function) எப்படி எழுதுவது?
செயல்கூறை எழுதுவதில் முதல் படி என்னவென்றால், செயல்கூறை நிரலில் அழைப்பதற்காக அல்லது பயன்படுத்திக் கொள்வதற்காக அதற்கு பெயரிடுவதுதான். மாறிகளுக்கு (variable) பெயரிடும் முறைப்படியே செயல்கூறுக்கும் (function) பெயரிட வேண்டும். மாறிகளுக்கு பெயரிடும் முறையில் உள்ள கட்டுப்பாடுகள் அனைத்தும் செயல்கூறுக்கு பெயரிடுவதற்கும் பொருந்தும்.
function என்ற முதன்மைச் சொல்லைக் (key word) கொண்டு செயல்கூறு(function) உருவாக்கப்படுகிறது. Function என்ற முதன்மைச் சொல்லைத் தொடர்ந்து செயல்கூறின் பெயர் இருக்கும். இருதியில் ஒரு ஜோடி பிறை வளை (a set of parentheses) இருக்கும். செயல்கூறின் உடல் (body of function) opening and closing braces – க்குள் இருக்கும்.
கீழ்காணும் நிரலைப் பாருங்கள்
<?php
//function creation
function myFunction() {
echo “<h2>PHP Functions</h2>”;
echo “Hello PHP!”;
}
//function calling
echo myFunction();
myFunction();
?>
நிரலின் வெளியீடு
செயல்கூறில் இருந்து மதிப்புகள் திரும்புதல் (Returning a Value from a function)
செயல்கூறினை நாம் அழைக்கும் போது அதிலிருந்து ஒற்றை மதிப்பு திருப்பி தரப்படலாம். திருப்பி தரப்படும் மதிப்புகள் எந்தவொரு மாறியினுடைய மதிப்பாகவும் இருக்க முடியும். அது எந்த மதிப்பு நம் விருப்பத்தைப் பொருத்தது.
கீழே உள்ள நிரலைப் பாருங்கள்
<?php
function myReturnFunction() {
$myFirstName = “Kathirvel”;
$myLastName = “Rajendran”;
$myFullName = $myFirstName.” “.$myLastName;
return $myFullName;
}
echo “My Name is “.myReturnFunction();
?>
நிரலின் வெளியீடு
செயல்கூறுக்கு அளபுருக்களை செலுத்துதல் (passing parameters to a function)
செயல்கூறுக்குள் அளபுருக்களைச் செலுத்த முடியும். இத்தனை அளபுருக்களைத்தான் செலுத்த வேண்டும் என்ற கட்டாயமில்லை. எவ்வளவு வேண்டுமானாலும் செலுத்திக் கொள்ளலாம். நாம் செயல்கூறை வடிவமைக்கும்போதே அளபுருக்களை ஏற்றுக் கொள்வதற்கு ஏற்ப வடிவமைக்க வேண்டும். அளபுருக்களின் பெயர்களை (parameters names) பிறை வளைக்குள் (parentheses) கொடுக்க வேண்டும். நாம் பொதுவாக மாறிகளுக்கு பெயரிடுவோமா இல்லையா அதுபோலவே அளபுருக்களுக்கும் பெயரிட்டுக் கொள்ள வேண்டும். இதற்கென தனியாக எந்த வரைமுறைகளும் கிடையாது.
கீழே உள்ள நிரலைப் பாருங்கள்
<?php
function myMultiplication($firstNumber, $secondNumber) {
return $firstNumber * $secondNumber;
}
echo “<h2>Multiplication using Function Parameters</h2>”;
echo myMultiplication(1540,2346.33);
?>
நிரலின் வெளியீடு
மேலே நாம் பார்த்த நிரலில் myMultiplication() function இரண்டு மதிப்புகளை ஏற்றுக் கொண்டு அந்த மதிப்புகளை firstNumber and secondNumber ஆகிய மாறிகளுக்கு அளிக்கிறது பின்பு அந்த மதிப்புகள் பெருக்கப்பட்டு திருப்பி அளிக்கப்படுகிறது.
செயல்கூறை அழைத்தல் (calling functions)
செயல்கூறை உருவாக்கும் போது நாம் அதற்கு கொடுத்த பெயரைக் கொண்டு செயல்கூறை நாம் எங்கு வேண்டுமானாலும் அழைத்துக் கொள்ளலாம். கீழே உள்ள நிரலைப் பார்த்தால் உங்களுக்கு நன்கு புரியும்.
<?php
function addNumbers($firstNumber, $secondNumber) {
return $firstNumber + $secondNumber;
}
function mulNumbers($firstNumber, $secondNumber) {
return $firstNumber * $secondNumber;
}
function subNumbers($firstNumber, $secondNumber) {
return $firstNumber – $secondNumber;
}
function divNumbers($firstNumber, $secondNumber) {
return $firstNumber / $secondNumber;
}
$first = 205;
$second = 40.57;
echo “<h2>Simple Calculator Using Functions</h2>”;
echo “Addition of $first, $second = “.addNumbers($first, $second);
echo “<br>”;
echo “Multiplication of $first, $second = “.mulNumbers($first, $second);
echo “<br>”;
echo “Subtraction of $first, $second = “.subNumbers($first, $second);
echo “<br>”;
echo “Division of $first, $second = “.divNumbers($first, $second);
?>
வெளியீடு
Passing Parameters by Reference
இந்த நிரலைப் பாருங்கள்
<?php
function myAddition($firstNumber , $secondNumber) {
$firstNumber += 100;
$secondNumber += 200;
return $firstNumber + $secondNumber;
}
$setFirstNumber = 100;
$setSecondNumber = 200;
echo “<h4>Before</h4>setFirstNumber = $setFirstNumber, setSecondNumber = $setSecondNumber <br>”;
myAddition($setFirstNumber , $setSecondNumber);
echo “<h4>After</h4>setFirstNumber = $setFirstNumber, setSecondNumber = $setSecondNumber<br>”;
?>
வெளியீடு
நாம் மேலே உள்ள நிரலில் $setFirstNumber மற்றும் $setSecondnumber ஆகிய இரண்டு மாறிகளின் மதிப்புகளையும் myAddition() எனும் செயல்கூறுக்குள்(function) அனுப்புகிறோம். நாம் அனுப்பிய மாறிகளின் மதிப்புகளைப் பெற்றுக் கொண்டு, அந்த மதிப்புகளில் சில மாற்றங்கள் myAddition() function க்குள் நடக்கிறது. அவ்வாறு நடந்த போதிலும் myAddition() function க்குள் மதிப்புகளைச் செலுத்துவதற்காக நாம் பயன்படுத்திய $setFirstNumber மற்றும் $setSecondNumber ஆகிய மாறிகளின் உண்மையான மதிப்புகளில் எந்த மாற்றமும் நடக்கவில்லை.
function க்குள்ளே மதிப்புகளில் நடைபெறும் மாற்றங்கள், function-க்கு மதிப்புகளை அனுப்புவதற்காக பயன்படுத்தப்படும் மாறிகளிலும் நடைபெற வேண்டுமென்றால் அதற்குத்தான் இந்த reference பயன்படுகிறது. இதை நாம் passing by reference என்று அழைக்கலாம். இதை நாம் ஒரு சிறிய மாற்றத்தின் மூலமாக செய்யலாம். அது எப்படியென்றால் function parameters variable க்கு முன் (&) குறியீட்டை இணைத்துவிட வேண்டும். மேலே நாம் நிரல் கீழே (&) குறீயீடு முன்–இணைப்பாக இணைத்து கொடுக்கப்பட்டுள்ளது. நிரலையும் அதற்கான வெளியீட்டையும் கீழே பாருங்கள்
<?php
function myAddition(&$firstNumber , &$secondNumber) {
$firstNumber += 100;
$secondNumber += 200;
return $firstNumber + $secondNumber;
}
$setFirstNumber = 100;
$setSecondNumber = 200;
echo “<h4>Before</h4>setFirstNumber = $setFirstNumber, setSecondNumber = $setSecondNumber <br>”;
myAddition($setFirstNumber , $setSecondNumber);
echo “<h4>After</h4>setFirstNumber = $setFirstNumber, setSecondNumber = $setSecondNumber<br>”;
?>
வெளியீடு
Functions and Variable Scope
Two Scopes
- global scope
- local scope
Global Scope
function – க்கு வெளியே variable declare செய்யப்பட்டால் அது global scope என்று அழைக்கப்படுகிறது. Gobal scope உடைய variable ஐ நிரலில் எங்கு வேண்டுமானாலும் பயன்படுத்திக் கொள்ளலாம்.
Local Scope
function–க்கு உள்ளே variable declare செய்யப்பட்டால் அது local scope எனப்படும். local scope உடைய variable ஐ எங்கு declare செய்யப்பட்டதோ அந்த function-க்குள் மட்டும்தான் பயன்படுத்த முடியும். function-க்கு வெளியே பயன்படுத்த முடியாது.
தொடரும்….