Trong PHP, phạm vi của biến (scope) xác định nơi mà biến có thể được truy cập và sử dụng. Có ba phạm vi chính cho biến trong PHP:
Biến toàn cục là biến được khai báo bên ngoài bất kỳ hàm hoặc lớp nào. Biến này có thể được truy cập ở bất kỳ đâu trong mã, nhưng cần phải sử dụng từ khóa global
để truy cập từ bên trong hàm.
Ví dụ:
$globalVar = "Tôi là biến toàn cục"; function showGlobalVar() { global $globalVar; // Sử dụng từ khóa global để truy cập biến toàn cục echo $globalVar; } showGlobalVar(); // In ra: Tôi là biến toàn cục
Biến cục bộ là biến được khai báo bên trong một hàm. Biến này chỉ có thể được truy cập và sử dụng trong phạm vi của hàm đó. Sau khi hàm thực thi, biến cục bộ sẽ không còn tồn tại.
Ví dụ:
function showLocalVar() { $localVar = "Tôi là biến cục bộ"; echo $localVar; // Có thể truy cập và sử dụng biến cục bộ } showLocalVar(); // In ra: Tôi là biến cục bộ // echo $localVar; // Lỗi: Không thể truy cập biến cục bộ
Biến tĩnh là biến được khai báo với từ khóa static
bên trong một hàm. Biến này sẽ giữ giá trị của nó giữa các lần gọi hàm, và chỉ có thể được truy cập trong phạm vi của hàm đó.
Ví dụ:
function countCalls() { static $count = 0; // Khai báo biến tĩnh $count++; echo "Hàm đã được gọi $count lần.n"; } countCalls(); // In ra: Hàm đã được gọi 1 lần. countCalls(); // In ra: Hàm đã được gọi 2 lần.
Biến trong lớp (thuộc tính) có thể được khai báo với từ khóa public
, protected
, hoặc private
. Các thuộc tính này có thể được truy cập trong các phương thức của lớp và có thể được truy cập từ bên ngoài (nếu là public).
Ví dụ:
class MyClass { public $publicVar = "Tôi là thuộc tính công khai"; private $privateVar = "Tôi là thuộc tính riêng tư"; public function showVars() { echo $this->publicVar; // Có thể truy cập thuộc tính công khai echo $this->privateVar; // Có thể truy cập thuộc tính riêng tư } } $obj = new MyClass(); $obj->showVars(); // In ra: Tôi là thuộc tính công khaiTôi là thuộc tính riêng tư // echo $obj->privateVar; // Lỗi: Không thể truy cập thuộc tính riêng tư từ bên ngoài
global
.static
, giữ giá trị giữa các lần gọi hàm.