آموزش كدنويسي PHP ( جلسه 16 - قسمت دوم )
مهم : متغیرهایی که داخل یک تابع تعریف می شوند ، فقط در داخل همان تابع قابل دسترسی هستند. یعنی آن متغیر ها بیرون تابع یا در تابع های دیگر در دسترس نیستند. در پروژهای بزرگ این امکان خیلی به شما کمک می کند. چون شما می توانید از اسم های تکراری برای متغیرهایتان در تابع های مختلف استفاده کنید بدون اینکه دخالتی در یکدیگر داشته باشند.
<html>
<head>
<title>Function5</title>
</head>
<body>
<?php
function test()
{
$testvariable = "this is a test variable"; //line 9
}
print "test variable: $testvariable<br>"; //line 11
?>
</body>
</html>
در مثال بالا خروجی چیزی را چاپ نخواهد نمود. چون $testvariable که در خط 11 برای چاپ خوانده می شود قبلا تعریف نشده است و $testvariable خط 9 فقط در داخل function قابل دسترسی هستند.
استفاده از متغیر به صورت Global
همان طور كه ديدم به صورت Default متغیرهای تعریف شده بیرون یک تابع ، داخل تابع در دسترس نیست. مثلا در مثال زیر :
<html>
<head>
<title>Function6</title>
</head>
<body>
<?php
$life = 42;
function meaningOfLife()
{
print "The meaning of life is $life<br>";
}
meaningOfLife();
?>
</body>
</html>
خروجی خالی چاپ می شود و مقدار $life را چاپ نخواهد کرد. در برخی موارد ما نیاز به استفاده از متغیرهای بیرون تابع داخل یک تابع داریم. برای این کار کافی است که از دستور Global استفاده کنیم.
به طور مثال می توانید برای این منظور کد بالا را به صورت زیر بازنویسی کنید :
<html>
<head>
<title>Function7</title>
</head>
<body>
<?php
$life=42;
function meaningOfLife()
{
global $life; //Line 10
print "The meaning of life is $life<br>";
}
meaningOfLife();
?>
</body>
</html>
در خط 10 از دستور global $life استفاده کردیم. در این حالت مقدار $life که بیرون تابع و در خط 7 تعریف شده در داخل تابع قابل دسترس می شود و خروجی این کد The meaning of life is 42 چاپ خواهد شد.
شما باید برای هر متغیری که می خواهید از آن در تابع استفاده کنید و همچنین در هر تابعی که می خواهید از متغیری خارج از آن تابع استفاده کند از این دستور استفاده كنيد.
مهم : دقت کنید که اگر $life داخل تابع تغییر دهید مقدار $life در کل برنامه عوض می شود.
و در انتها مثالي از متغييرهاي global و كاربردش :
<?php
function CalculateTotal ($HowMany,$Price,$TaxRate, $Savings){
$TaxRate++;
$TheCost = ($Price * $HowMany);
if(($TheCost < 50)AND ($Saving)) {
Print (Your \$$Savings will not apply because the total value of the safe is under $50!\n<P>);
}
if($TheCost >= 50) {
$TheCost = $TheCost -$Saving;
}
$TheCost = $TheCost * $TaxRate;
return $TheCost;
}
function CalculatePayments ($Amount,$NumberPayments) {
$Payments = round ($Amount,2) / $NumberPayments;
$Payments = sprintf (%01.2f,$Payments);
return $Paymenst;
}
?>
////////////////////////////////////////////////////////////////////
<HTML>
<HEAD>
<TITLE>Calculateion Functions</TITLE>
</HEAD>
<BODY>
<?php
$Cost = 20.00;
$Tax = 0.06;
if ($Quantity) {
$Quantity = abs($Quantity);
$Discount = abs($Discount);
$TotalCost = CalculateTotal($Quality,$Cost,$Tax,$Discount);
print(You requested to purchase $Quntity widget(s) at \$$Cost each.\n<P>);
print(The total with tax , minus your \$$Discount, comes to $);
printf (%01.2f , $TotalCost);
print(.\n<P> You may purchase the widget(s) in 12 monthly installments os $);
print (CalculatePayments($TotalCost,12));
print(each.\n<P>);
}else{
print (Please make sure that you have entered both a quantity and an
applicable discount and then resubmit.\n);
}
?>
</BODY>
</HTML>