Trong PHP, bất kỳ biến nào có thể được truy cập từ bất kỳ đâu trong một kịch bản PHP được gọi là một global variable . Nếu biến được khai báo bên ngoài tất cả các hàm hoặc lớp trong kịch bản, nó trở thành một biến toàn cục.
Trong khi các biến toàn cục có thể được truy cập trực tiếp bên ngoài một hàm, chúng không tự động có sẵn bên trong một hàm.
Trong kịch bản dưới đây, $name là toàn cục cho hàm sayhello() .
<?php $name = "Amar"; function sayhello() { echo "Hello " . $name; } sayhello(); ?>
Tuy nhiên, biến này không thể truy cập bên trong hàm. Do đó, bạn sẽ nhận được một thông báo error message "Biến $name không được xác định".
Hello PHP Warning: Undefined variable $name in /home/cg/root/93427/main.php on line 5
Để truy cập biến trong một hàm, bạn cần sử dụng từ khóa "global" trước biến đó.
<?php $name = "Amar"; function sayhello() { GLOBAL $name; echo "Hello " . $name; } sayhello(); ?>
Nó sẽ tạo ra output −
Hello Amar
Nếu một hàm truy cập vào một biến toàn cục và sửa đổi nó, giá trị đã được sửa đổi sẽ có sẵn ở mọi nơi sau khi hàm được gọi hoàn tất.
Hãy thay đổi giá trị của $name bên trong hàm sayhello() và kiểm tra giá trị của nó sau khi hàm được gọi.
Hãy xem xét ví dụ sau đây −
<?php $name = "Amar"; function sayhello() { GLOBAL $name; echo "Global variable name: $name" .PHP_EOL; $name = "Amarjyot"; echo "Global variable name changed to: $name" .PHP_EOL; } sayhello(); echo "Global variable name after function call: $name" .PHP_EOL; ?>
Nó sẽ tạo ra output −
Global variable name: Amar Global variable name changed to: Amarjyot Global variable name after function call: Amarjyot
PHP duy trì một mảng liên kết có tên $GLOBALS chứa tất cả các biến và giá trị của chúng được khai báo trong phạm vi toàn cục. Mảng $GLOBALS cũng lưu trữ nhiều biến đã được định nghĩa trước gọi là superglobals, cùng với các biến toàn cục do người dùng định nghĩa.
Bất kỳ biến toàn cục nào cũng có thể được truy cập bên trong bất kỳ hàm nào với sự trợ giúp của cú pháp thông thường để truy cập một phần tử mũi tên. Ví dụ, giá trị của biến toàn cục $name được cho bởi $GLOBALS["name"] .
Trong ví dụ sau, hai biến toàn cục $x và $y được truy cập bên trong hàm addition().
<?php $x = 10; $y = 20; function addition() { $z = $GLOBALS['x']+$GLOBALS['y']; echo "Addition: $z" .PHP_EOL; } addition(); ?>
Nó sẽ tạo ra output −
Addition: 30
Bạn cũng có thể thêm bất kỳ biến cục bộ nào vào phạm vi toàn cục bằng cách thêm nó vào mảng $GLOBALS. Hãy để chúng ta thêm $z vào phạm vi toàn cục.
<?php $x = 10; $y = 20; function addition() { $z = $GLOBALS['x']+$GLOBALS['y']; $GLOBALS['z'] = $z; } addition(); echo "Now z is the global variable. Addition: $z" .PHP_EOL; ?>
Nó sẽ tạo ra output −
Now z is the global variable. Addition: 30
Bạn có thể bao gồm một script PHP trong một script khác. Các biến được khai báo trong script được bao gồm sẽ được thêm vào phạm vi toàn cục của script PHP mà nó được bao gồm.
Dưới đây là tệp "a.php" −
<?php include 'b.php'; function addition() { $z = $GLOBALS['x']+$GLOBALS['y']; echo "Addition: $z" .PHP_EOL; } addition(); ?>
Nó bao gồm "b.php" có các biến $x và $y , vì vậy chúng trở thành các biến toàn cục cho hàm addition() trong tập lệnh "a.php".
<?php $x = 10; $y = 20; ?>
Các biến toàn cục thường được sử dụng khi triển khai các mẫu singleton, truy cập các thanh ghi trong hệ thống nhúng và cũng khi một biến được sử dụng bởi nhiều hàm.