PHP variable scope: सभी programming language में variable का scope अलग अलग प्रकार से define किया जाता है| Variable scope का मतलब होता है की वह variable किस range तक इस्तेमाल हो सकता है| जैसे जिस प्रकार हर देश की एक सीमा (border) होती है ठीक उसी प्रकार programming language में variable का भी एक सीमा होता है| Variable उस सीमा के बाहर उपयोग नहीं हो सकता है|
PHP Variable scope
PHP variable scope दूसरे programming language से थोड़ा different है और इसे समझना भी बहुत आसान है लेकिन जो लोग C, C++ पढ़ें हैं उन्हें यह शुरू में थोडा मुश्किल लगेगा|
ज्यादातर PHP variable का single scope होता है मतलब की यह जिस जगह पर define होता है केवल उसी file में इस्तेमाल होता है लेकिन उस file में जो file included होगा उसमें भी इस्तेमाल किया जा सकता है| जैसे की:
first.php
<?php
$n = 45;
echo "This is the first page " . $n . '<br>';
include 'second.php';
second.php
<?php
echo "This is the second page " . $n . '<br>';
output
This is the first page 45
This is the second page 45
यहाँ पर मैंने first.php
में second.php
को include किया है जब हम first.php को run करेंगे तो second.php
के script अपने आप execute हो जायेंगे| अब यहाँ पर मैंने variable $n
को first.php
में define किया है और इसे second.php
में भी use किया है|
PHP में दो प्रकार के variable scope होते हैं|
- Global
- Local
Global:
Global variable PHP script में कहीं पर भी access किया जा सकता है लेकिन अगर किसी function के अन्दर global variable का इस्तेमाल करना हुआ तो हमे पहले function को बताना पड़ता है की यह global variable है अन्यथा function उसे local variable मान लेता है| जैसे:
<?php
$n = 1; /* global variable scope */
function userFunction()
{
echo $n; /* reference to local scope variable */
}
userFunction();
Output
Notice: Undefined variable: n in C:\xampp\htdocs\php-variable\first.php on line 6
ऊपर दिए गए code में हमने global variable को एक function के अन्दर use करने की कोशिश किया है लेकिन वह मुझे error दे रहा है क्योंकि userFunction() अपने local variable को ढूंढ रहा है जो की उसे नहीं मिल रहा है अब हमें उस function को ये बताना पड़ेगा की यह variable global variable है| user define function को global variable के बारे में बताने के लिए हमें global keyword का इस्तेमाल करना होता है| जैसे की :
<?php
$n = 1; /* global variable scope */
function userFunction()
{
global $n;
echo $n;
}
userFunction();
Output
1
बिना global keyword के global variable को access कैसे करें?
PHP में आप बिना global keyword के भी global variable को access कर सकते हैं इसके लिए PHP में एक array variable बनाया गया है $GLOBALS जिसे की superglobals के नाम से भी जाना जाता है| यह एक associative array है जो की हर समय PHP script में available होता है| जैसे की:
<?php
$n = 1; /* global variable scope */
function userFunction()
{
echo "This is super global variable " . $GLOBALS['n'];
}
userFunction();
Output
This is super global variable 1
Local:
Local variable केवल उसी function में इस्तेमाल किया जा सकता है जिसमें की वह create किया गया है| PHP में function के अन्दर create किया गया हर एक variable local variable होता है और वह केवल उसी function में इस्तेमाल हो सकता है यहाँ तक की अगर उसके अन्दर दूसरा function है तो दूसरा function parent function के local variable को इस्तेमाल नहीं कर सकता है| चलिए एक एक करके example से समझते हैं|
<?php
function test()
{
$a = 'Outer local value';
echo $a;
function innerTest()
{
echo $a;
}
innerTest();
}
test();
Output
Outer local value
Notice: Undefined variable: a in C:\xampp\htdocs\php-variable\first.php on line 10
ऊपर दिए गए code में मैंने outer function के local variable को inner function के अन्दर use करने की कोशिश किया है लेकिन जब हम output देखते हैं तो हमे पता चलता है की inner function उस variable को access नहीं कर पा रहा है| ऐसा इसलिए हो रहा है क्योंकि हर user define function के अन्दर बिना global keyword के define किये गए variable local variable होते हैं और वे केवल उस function में ही इस्तेमाल हो सकते हैं दूसरे function में नहीं|
अब अगर हमें ऊपर के code को सही करना है तो हमारे पास दो तरीका है चलिए एक एक करके देखते हैं|
पहला तरीका
<?php
function test()
{
global $a;
$a = 'global value';
echo $a . "<br>";
function innerTest()
{
global $a;
echo "Inner part " . $a;
}
innerTest();
}
test();
Output
global value
Inner part global value
पहला तरीका में मैंने दोनों function के variable को global variable बना दिया जिससे की inner function भी उस variable के value को access कर सके| Generally programming करते समय ये तरीका नहीं अपनाना चाहिए|
दूसरा तरीका
<?php
$a = 'global value';
function test()
{
global $a;
echo $a . "<br>";
function innerTest()
{
global $a;
echo "Inner part " . $a;
}
innerTest();
}
test();
Output
global value
Inner part global value
दूसरा तरीका में मैंने सबसे पहले एक global variable create किया और उसे दोनों function के अन्दर हमने बताया की यह global variable है जिसको दोनों function के द्वारा इस्तेमाल किया जा सकता है|
Static variable
- Static variable उस variable को कहा जाता है जो की static keyword के साथ define हो|
- Static variable के value program execution के दौरान assign नहीं हो सकते|
- static variable केवल एक ही बार initialize होता है|
हमे static variable का इस्तेमाल कब करना चाहिए?
जैसा की हम हमेशा local variable का इस्तेमाल करते आये है| Local variable function call होने के बाद initialize हो जाता है और function के execution complete होने के बाद गायब हो जाता है| यह logic सही भी है क्योंकि यह ज्यादा मेमोरी consume नहीं करेगा|
लेकिन कभी कभी ऐसा situation होता है की हमें किसी variable के value को fix रखना होता है तो उस case में हम local variable को static variable बना देते हैं| चलिए example देखते हैं|
<?php
function test()
{
$a = 5;
$a++;
return $a;
}
echo test() . "<br>"; //6
echo test() . "<br>"; //6
echo test() . "<br>"; //6
Output
6
6
6
ऊपर के code में value बार बार reset हो जा रहा है जबकि हमें हर call के बाद increased value चाहिए था| इसके लिए फिर हम static keyword का इस्तेमाल करेंगे| जैसे:
<?php
function test()
{
static $a = 5;
$a++;
return $a;
}
echo test() . "<br>"; //6
echo test() . "<br>"; //7
echo test() . "<br>"; //8
Output
6
7
8
जब हमने static keyword का इस्तेमाल किया तो हमें increased value मिल गया| इस code में हुवा यह की static variable केवल एक ही बार execute हुआ चाहे function कितना बार भी कॉल हो जाये जिसके कारण value reset नहीं हुआ|
Summary
इस tutorial में हमने PHP variable scope के बारे में पढ़ा| इसमें हमने हर प्रकार के example के द्वारा variable scope को समझाने का प्रयास किया है|
Gv! says
Hiii