Scope của biến
Scope là tầm vực hoạt động của biến. Trong PHP biến có scope là ngữ cảnh mà nó định nghĩa. Một biến tron PHP thông thường có scope là trong file đó và các file include (hay được gọi là global scope).
1
2
3
|
<?php
$a = 10; // global scope
include 'b.php'; // biến $a cũng có thể truy cập trong file b.php
|
Tuy nhiên khi khai báo hàm thì biến được có scope là hàm đó.
1
2
3
4
5
6
7
|
<?php
$a = 10; // global scope
function test() {
echo $a; // không thể truy cập biến $a ở ngoài
}
test();
|
Biến global
Để sử dụng biến global thì hãy sử dụng từ khóa global
hoặc sử dụng mảng $GLOBALS
.
1
2
3
4
5
6
7
8
9
10
|
<?php
$a = 10; // global scope
function test() {
global $a; // khai báo biến $a sử dụng scope global
echo $a . ' '; // chuyển $a thành string rồi nối xâu
echo $GLOBALS['a'] * 2;
}
test(); // -> 10 20
|
Biến static
Biến static là biến tĩnh chỉ khởi tạo một lần khi gọi hàm, khi gọi hàm các lần tiếp theo sẽ không khởi tạo lại biến. Giá trị của biến không mất đi khi lời gọi hàm kết thúc.
1
2
3
4
5
6
7
8
9
|
<?php
function test() {
static $a = 0;
echo $a . ' ';
$a++;
}
test(); // -> 0
test(); // -> 1
test(); // -> 2
|
Biến của biến (Variable variables)
Variable variables là cách chuyển string thành tên biến sử dụng hai dấu dollar $$
.
1
2
3
4
5
6
7
8
|
<?php
$a = 'hello';
$hello = 2020;
// tương đương với echo $hello
echo ${'hello'} . '\n'; // -> 2020
echo ${$a} . '\n'; // -> 2020
echo $$a . '\n'; // -> 2020
|