PHP - Global Variables

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.

Example

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

Example

Để 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.

Example

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

The $GLOBALS Array

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"] .

Example

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

Example

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

Including One PHP Script in Another

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 $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.