PHP - Superglobals

Bộ phân tích cú pháp PHP điền vào tập lệnh hiện tại với một số biến được định nghĩa trước trong không gian tên toàn cục của nó. Các biến được định nghĩa trước được gọi là " PHP superglobals ".

  • Bất kỳ biến nào do người dùng định nghĩa được khai báo bên ngoài bất kỳ hàm, phương thức hoặc lớp nào cũng là một biến toàn cục. Tuy nhiên, để truy cập nó, bạn cần sử dụng từ khóa global .

  • Ngược lại, superglobals luôn có sẵn ở bất kỳ đâu trong kịch bản PHP, mà không cần đề cập đến chúng bằng từ khóa global .

Hầu hết các siêu toàn cục (superglobals) trong PHP là các mảng liên kết, và máy chủ web sẽ điền chúng. Do đó, nếu một kịch bản được chạy trong môi trường dòng lệnh, một số siêu toàn cục có thể sẽ trống.

Danh sách các biến siêu toàn cục trong PHP bao gồm các biến sau:

  • $GLOBALS

  • $_SERVER

  • $_GET

  • $_POST

  • $_FILES

  • $_COOKIE

  • $_SESSION

  • $_REQUEST

  • $_ENV

Trong chương này, chúng ta sẽ có một giới thiệu ngắn gọn về các biến siêu toàn cục này trong PHP. Trong các chương tiếp theo, chúng ta sẽ thảo luận chi tiết về các biến siêu toàn cục này.

$GLOBALS

Đó là một mảng liên kết chứa các tham chiếu đến tất cả các biến được định nghĩa toàn cục. Tên của các biến tạo thành các khóa và nội dung của chúng là giá trị của mảng liên kết.

$_SERVER

Tất cả thông tin liên quan đến máy chủ và môi trường thực thi có sẵn trong mảng liên kết này.

Các phiên bản PHP trước 5.4.0 chứa $HTTP_SERVER_VARS có thông tin tương tự nhưng đã bị loại bỏ.

$_GET

Đây là một mảng liên kết của các biến được truyền vào kịch bản hiện tại thông qua chuỗi truy vấn được thêm vào URL của yêu cầu HTTP. Lưu ý rằng mảng này được lấp đầy bởi tất cả các yêu cầu có chuỗi truy vấn ngoài các yêu cầu GET.

Một chuỗi truy vấn là danh sách tất cả các biến và giá trị của chúng theo dạng var=val và được nối với nhau bằng ký hiệu "&".

Chuỗi truy vấn tự nó được thêm vào tên của tập tin PHP sau ký hiệu "?". Ví dụ, http://localhost/hello.php?first_name=Amar&last_name=Sharma .

$_POST

Đó là một mảng liên kết của các cặp khóa-giá trị được truyền đến một URL bằng phương thức HTTP POST, sử dụng kiểu nội dung URLEncoded hoặc multipart/form-data trong yêu cầu.

$HTTP_POST_VARS cũng chứa thông tin giống như $_POST, nhưng không phải là một siêu toàn cục và đã bị loại bỏ. Cách dễ nhất để gửi dữ liệu đến máy chủ bằng yêu cầu POST là chỉ định thuộc tính method của biểu mẫu HTML là POST.

$_FILES

Biến $_FILES là một mảng liên kết chứa các mục được tải lên qua phương thức HTTP POST. Một tệp tin được tải lên khi một biểu mẫu HTML chứa một phần tử input với kiểu tệp, thuộc tính enctype được đặt thành multipart/form-data, và thuộc tính method được đặt thành phương thức HTTP POST.

$_COOKIE

Cookies là các tệp văn bản được lưu trữ bởi một máy chủ trên máy tính của khách hàng và chúng được giữ lại với mục đích theo dõi việc sử dụng.

Biến siêu toàn cục $_COOKIE lưu trữ các biến được truyền đến tập lệnh PHP hiện tại cùng với yêu cầu HTTP dưới dạng cookie.

$_SESSION

Một phiên HTTP là khoảng thời gian giữa lúc người dùng thiết lập kết nối với máy chủ và lúc kết nối bị chấm dứt. Trong khoảng thời gian này, một số dữ liệu được duy trì liên tục trên các trang dưới dạng biến phiên.

Biến siêu toàn cục $_SESSION là một mảng liên kết chứa các biến phiên (session variables) có sẵn cho kịch bản hiện tại.

$_REQUEST

$_REQUEST là một mảng liên kết, là tập hợp các nội dung của các biến $_GET, $_POST và $_COOKIE.

Thứ tự của các biến này được quyết định bởi giá trị của các cài đặt requests_order varables_order trong tệp "php.ini".

$_ENV

$_ENV là một mảng liên kết lưu trữ tất cả các biến môi trường có sẵn cho script hiện tại. Mảng này cũng bao gồm các biến CGI trong trường hợp PHP đang chạy như một mô-đun máy chủ hoặc bộ xử lý CGI.