Phạm vi của biến trong PHP

Các biến trong PHP có thể là một trong bốn loại phạm vi sau: 

- Biến cục bộ.
- Tham số các hàm.
- Biến toàn cục.
- Biến static.

1)Biến cục bộ: Một biến được khai báo trong một hàm thì được xem như là một biến cục bộ và nó chỉ được tham chiếu trong hàm đó. Bất kể việc gán giá trị bên ngoài hàm đều xem như là biến hoàn toàn khác với biến trong hàm đó. Chú ý khi thoát khỏi hàm mà biến cục bộ được khai báo, thì biến và giá trị của nó sẽ bị huỷ bỏ. Biến cục bộ có thuận lợi bởi nó loại bỏ những khả năng của các tác động không dự đoán được làm thay đổi kết quả từ các biến có thể truy cập toàn cục.Ví dụ:

$x = 4;
function assignx () {
$x = 0;
print "\$x inside function is $x. 
";
}
assignx();
print "\$x outside of function is $x. 
"; 
 



Sau khi thực hiện sẽ có các kết quả như sau:


$x inside function is 0.
$x outside of function is 4. 


2)Tham số của hàm: cũng giống như nhiều ngôn ngữ lập trình khác, trong PHP hàm có chứa tham số phải khai báo các tham số trong phần đầu của hàm. Mặc dầu, những tham số này nhận các giá trị đến từ bên ngoài hàm, nhưng chúng sẽ chỉ có thể truy cập một khi hàm tồn tại. Các tham số của hàm được khai báo sau tên hàm và bên trong dấu {. Ví dụ:

function x10 ($value) {
$value = $value * 10;
return $value;} 

 

Điều quan trọng cần phải chú ý là mặc dầu bạn có thể truy cập và thao tác với các tham số trong hàm mà nó được khai báo, nhưng nó sẽ bị huỷ bỏ khi hàm kết thúc thực hiện.

3)Biến toàn cục: ngược lại với biến cục bộ, biến toàn cục có thể được truy cập từ bất cứ phần nào trong chương trình .Tuy nhiên, để có thể chỉnh sửa, biến toàn cục phải được khai báo toàn cục trong hàm mà nó được chỉnh sửa. Để khai báo một biến là toàn cục ta đặt từ khoá GLOBAL ở phía trước.Ví dụ:

$somevar = 15;
function addit() {
GLOBAL $somevar;
$somevar++;
print "Somevar is $somevar";
}
addit(); 
 



Kết quả của $somevar là 16. Tuy nhiên, nếu bạn bỏ dòng lệnh GLOBAL $somevar; thì biến $somevar sẽ chỉ có giá trị là 1, bởi biến $somevar được xem như là biến cục bộ trong hàm addit( ).
Một cách khác để khai báo một biến là toàn cục là sử dụng mảng $GLOBALS của PHP. Ví du, khai báo biến $somevar là toàn cục bằng cách sử dụng mảng này:

$somevar = 15;
function addit() {
$GLOBALS["somevar"];
$somevar++;
}
addit();
print "Somevar is $somevar"; 
 


4)Biến static: tương phản với các biến được khai báo trong các tham số của hàm sẽ bị huỷ bỏ khi thoát khỏi hàm, biến static sẽ không mất giá trị của nó khi thoát khỏi hàm và sẽ giữ nguyên giá trị đó khi hàm được gọi lại lần nữa. Bạn có thể khai báo một biến là static bằng cách dùng từ khoá STATIC đặt trước tên biến.
Ví dụ: 

function keep_track() {
STATIC $count = 0;
$count++;
print $count;
print "
";
}
keep_track();
keep_track();
keep_track(); 
 


Kết quả là :

1
2
3