Bài viết này giải thích về ba phạm vi biến khác nhau trong PHP bao gồm phạm vi cục bộ (local
), phạm vi toàn cục (global
) và phạm vi tĩnh (static
). Bạn sẽ hiểu cách hoạt động của từng phạm vi và cách sử dụng chúng để tối ưu hóa mã nguồn của bạn.
Phạm vi biến trong PHP
Trong PHP, bạn có khả năng khai báo biến ở bất kỳ đâu trong đoạn mã. Tuy nhiên, quyết định nơi mà biến có thể được sử dụng hoặc tham chiếu được gọi là "phạm vi biến" - variable scope.
Ba phạm vi biến khác nhau
Trong PHP, có ba loại phạm vi biến chính:
- Phạm vi cục bộ (
local
): Biến được khai báo bên trong một hàm chỉ có thể được truy cập và sử dụng trong phạm vi của hàm đó. Nó không thể được truy cập từ bên ngoài hàm. - Phạm vi toàn cục (
global
): Biến được khai báo bên ngoài các hàm và có thể được truy cập và sử dụng từ bất kỳ đâu trong mã. Chúng tồn tại trong suốt thời gian chạy của chương trình. - Phạm vi tĩnh (
static
): Phạm vi này cho phép biến duy trì giá trị của nó giữa các lần gọi hàm. Thay vì bị xóa khi hàm kết thúc thực thi, biến tĩnh vẫn giữ lại giá trị của nó từ lần gọi trước đó.
Phạm vi cục bộ và toàn cục
Nếu một biến được khai báo bên ngoài một hàm, nó có "phạm vi toàn cục." Điều này có nghĩa rằng biến đó có thể được truy cập từ bất kỳ đâu trong mã, kể cả bên ngoài hàm. Tuy nhiên, nếu biến được khai báo bên trong một hàm, nó chỉ có "phạm vi cục bộ" và chỉ có thể được truy cập và sử dụng trong hàm đó. Bên ngoài hàm, biến cục bộ không thể được truy cập.
Sử dụng từ khóa "global"
Để truy cập biến có phạm vi toàn cục từ bên trong một hàm, bạn có thể sử dụng từ khóa global
trước biến. Điều này cho phép bạn sử dụng biến toàn cục trong phạm vi của hàm.
Ví dụ:
$x = 5; // Biến có phạm vi toàn cục
function myTest() {
global $x; // Sử dụng biến toàn cục trong hàm
$x = $x + 10; // Thay đổi giá trị biến toàn cục
}
myTest();
echo $x; // Kết quả: 15
Sử dụng từ khóa "static"
Từ khóa static
cho phép biến duy trì giá trị của nó qua các lần gọi hàm. Mỗi lần hàm được gọi, biến tĩnh vẫn giữ lại giá trị từ lần gọi trước đó.
Ví dụ:
function myTest() {
static $x = 0; // Biến tĩnh với giá trị ban đầu là 0
echo $x;
$x++;
}
myTest(); // Kết quả: 0
myTest(); // Kết quả: 1
myTest(); // Kết quả: 2
Lưu ý: Biến tĩnh vẫn có phạm vi cục bộ và chỉ có thể truy cập trong hàm mà nó được khai báo. |
Với hiểu biết về phạm vi biến trong PHP, bạn có thể quản lý biến hiệu quả và sử dụng chúng theo cách tốt nhất trong các dự án phức tạp.