วันเสาร์ที่ 20 เมษายน พ.ศ. 2556

PHP Global

PHP Global() ตัวแปรระดับโกลบอลเมื่อมีการประกาศแล้ว สามารถทำการเรียกใช้ค่าตัวแปรนั้น ๆ ได้จากชื่อตัวแปรโดยตรงและยังถูกจำเข้าสู่หน่อยความจำ คือตัวแปรโกลบอลสามารถเรียกใช้งานได้ทั้งภายนอกและภายใน function และสามารถเรียกใช้งานได้ทั้งโปรเจค

Syntax


<?
$GLOBALS["var"] = $value;

echo $var;
?>


Sample

<?php
$a = 1;
$b = 2;

function Sum()
{
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
} 

Sum();
echo $b;
?>


PHP Global 
Screenshot

PHP Global 

บางครั้งเราไม่ต้องการที่จะผ่านตัวแปรเป็นอาร์กิวเมนต์ของฟังก์ชัน เพื่อนำไปใช้ภายในฟังก์ชันเหล่านั้น ก็จะทำได้โดยการแจ้งใช้ตัวแปรที่มีชื่อเหมือนตัวแปรภายนอกที่เราต้องการใช้ ให้เป็น global หรือใช้ผ่านตัวแปรที่เป็นอาร์เรย์ของ PHP ที่มีชื่อว่า $GLOBALS ดังตัวอย่างต่อไปนี้

Code

<?
$a = 10;
$b = 20;
function getMin ( ) {
global $a, $b;

if ($a < $b)
return $a;
else
return $b;
}

function getMin2 () {
if ($GLOBALS["a"] < $GLOBAL["b"])
return $GLOBALS["a"];
else
return $GLOBALS["b"];
}

echo getMin()."<BR>\n";
echo getMin2()."<BR>\n";
?>


ใน กรณีนี้เราต้องการจะใช้ตัวแปร $a และ $b ซึ่งอยู่นอกฟังก์ชัน getMin() เพื่อเช็คดูว่า ค่าของตัวแปรใดมีค่าน้อยกว่ากัน ถ้าเราไม่แจ้งใช้ global $a, $b; ตามตัวอย่างแล้ว $a และ $b จะกลายเป็นตัวแปรภายในแม้ว่าจะชื่อเหมือนกันตัวแปรภายนอกที่มีอยู่แล้วก็ตาม ทำให้ได้ผลการทำงานไม่ถูกต้องตามที่ต้องการ

ฟังก์ชัน getMin() อีกรูปแบบหนึ่ง โดยไม่ใช้ตัวแปรแบบ global ภายในฟังก์ชัน และใช้วิธีผ่านค่าแทน

Code

<?
$a = 10;
$b = 20;
function getMin ($a, $b) {
if ($a < $b)
return $a;
else
return $b;
}

echo getMin($a, $b)."<BR>\n";
?>


การตัวแปรแบบ static ภายในฟังก์ชัน
สมมุติว่า เราต้องการจะใช้ตัวแปรภายในฟังก์ชัน และสามารถเก็บค่าไว้ได้ตลอดเวลา โดยไม่สูญหายไปทุกครั้งที่มีการเรียกใช้ฟังก์ชัน ในกรณีนี้เราจะแจ้งใช้ตัวแปรให้เป็นแบบ static ตามตัวอย่างต่อไปนี้

Code

<?
function MyFunc() {
static $num_func_calls = 0;
echo "my function\n";
return ++$num_func_calls;
}
?>


ทุกครั้งที่มีการเรียกใช้ฟังก์ชันดังกล่าว ตัวแปรชื่อ $num_func_calls ซึ่งมีค่าเริ่มต้นเป็นศูนย์ในตอนแรก จะเพิ่มค่าที่เก็บขึ้นทีละหนึ่ง

การผ่านค่ากลับคืนมากกว่าหนึ่งจากฟังก์ชัน
โดยปรกติแล้วเราไม่สามารถผ่านค่ากลับคืนจากฟังก์ชันได้มากกว่าหนึ่ง แต่อย่างไรก็ตาม ยังมีวิธีการหนึ่งที่ช่วยแก้ปัญหาดังกล่าวได้ วิธีนี้คือ เก็บค่าต่างๆที่ต้องการจะใช้เป็นค่ากลับคืนไว้ใน array แล้วใช้ array นั้นเป็นค่ากลับคืน และผู้เรียกใช้ฟังก์ชันสามารถใช้ฟังก์ชัน list() อ่านค่าเหล่านั้นได้ ตัวอย่างเช่น

Code

<?
function foobar() {
return array ("foo", "bar", 0xff);
}
list ($foo, $bar, $num) = foobar();
echo "$foo $bar $num <BR>\n";
?>



จากตัวอย่าง ฟังก์ชัน foobar() จะให้ค่ากลับคืนเป็น array ประกอบด้วยสามสมาชิก ค่าที่ได้จากฟังก์ชันนี้ก็จะส่งไปยังฟังก์ชัน list() เพื่อให้เก็บแยกลงในตัวแปรตามชื่อที่กำหนดคือ $foo, $bar และ $num ตามลำดับ 

ขอบคุณ ที่มาจากเว็บไซต์อื่น ๆ 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น