Superglobals được giới thiệu trong Php 4.1.0 và là các biến tích hợp luôn có sẵn trong tất cả các phạm vi.
Biến toàn cầu PHP - Superglobals
Một số biến được xác định trước trong PHP là "Superglobals", điều đó có nghĩa là chúng luôn có thể truy cập, bất kể phạm vi - và bạn có thể truy cập chúng từ bất kỳ chức năng, lớp hoặc tệp nào mà không phải làm bất cứ điều gì đặc biệt.
Các biến Superglobal PHP là:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
Các chương tiếp theo sẽ giải thích một số Superglobals, và phần còn lại sẽ được giải thích trong các chương sau.
PHP Superglobal - $ Globals
Các biến siêu toàn cầu là các biến tích hợp luôn có sẵn trong tất cả các phạm vi.
$ Globals là một biến siêu toàn cầu PHP được sử dụng để truy cập các biến toàn cầu từ mọi nơi trong tập lệnh PHP [cũng từ bên trong các chức năng hoặc phương thức].
PHP lưu trữ tất cả các biến toàn cầu trong một mảng có tên $ Globals [index]. Chỉ số giữ tên của biến.
Ví dụ dưới đây cho thấy cách sử dụng biến số siêu toàn cầu $ Globals:
Thí dụ
PHP lưu trữ tất cả các biến toàn cầu trong một mảng có tên $ Globals [index].
$x = 75;
$y = 25;
& nbsp; bổ sung chức năng [] {& nbsp; & nbsp; $ globals ['z'] = $ globals ['x'] + $ globals ['y']; }
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
& nbsp; bổ sung []; Echo $ z; ?>
echo $z;
?>
Hãy tự mình thử »
Trong ví dụ trên, vì Z là một biến có trong mảng $ Globals, nó cũng có thể truy cập từ bên ngoài chức năng!
Pogregoire ## Live.fr ¶
Jameslee at cs dot nmt dot edu ¶
17 năm trước
Từ khóa global
Đầu tiên, một ví dụ sử dụng global
:
Ví dụ #1 sử dụng global
Tập lệnh trên sẽ xuất ra
Static object: NULL Static object: NULL Static object: NULL Static object: object[stdClass]#3 [1] { ["property"]=> int[1] }0. Bằng cách tuyên bố $ a và $ b toàn cầu trong hàm, tất cả các tham chiếu đến một trong hai biến sẽ đề cập đến phiên bản toàn cầu. Không có giới hạn về số lượng biến toàn cầu có thể được thao tác bởi một hàm.
Cách thứ hai để truy cập các biến từ phạm vi toàn cầu là sử dụng mảng $ Globals được xác định bằng PHP đặc biệt. Ví dụ trước có thể được viết lại như:
Ví dụ #2 sử dụng $ globals thay vì toàn cầu
0
Bây giờ, $ A chỉ được khởi tạo trong cuộc gọi đầu tiên của hàm và mỗi khi hàm
1 được gọi là nó sẽ in giá trị của $ a và tăng nó.
Các biến tĩnh cũng cung cấp một cách để đối phó với các hàm đệ quy. Một hàm đệ quy là một hàm tự gọi. Phải cẩn thận khi viết một hàm đệ quy vì có thể làm cho nó tái phát vô thời hạn. Bạn phải chắc chắn rằng bạn có một cách đủ để chấm dứt đệ quy. Hàm đơn giản sau đây được tính vào 10, sử dụng số lượng tĩnh $ để biết khi nào nên dừng:
Ví dụ #6 biến tĩnh với các hàm đệ quy
2
Các biến tĩnh có thể được gán các giá trị là kết quả của các biểu thức không đổi, nhưng các biểu thức động, chẳng hạn như các lệnh gọi hàm, sẽ gây ra lỗi phân tích cú pháp.
Ví dụ #7 Khai báo các biến tĩnh
3
Kể từ Php 8.1.0, khi một phương thức sử dụng các biến tĩnh được kế thừa [nhưng không được ghi đè], phương thức kế thừa giờ đây sẽ chia sẻ các biến tĩnh với phương thức mẹ. Điều này có nghĩa là các biến tĩnh trong các phương thức bây giờ hoạt động giống như các thuộc tính tĩnh.
Ví dụ #8 Sử dụng các biến tĩnh trong các phương thức được kế thừa
4
Ghi chú::
Sử dụng từ khóa
global
Bên ngoài chức năng không phải là lỗi. Nó có thể được sử dụng nếu tệp được bao gồm từ bên trong một hàm.
Sử dụng các biến Static object: NULL
Static object: NULL
Static object: NULL
Static object: object[stdClass]#3 [1] {
["property"]=>
int[1]
}
6
Một tính năng quan trọng khác của phạm vi biến là biến tĩnh. Một biến tĩnh chỉ tồn tại trong phạm vi hàm cục bộ, nhưng nó không mất giá trị khi thực hiện chương trình rời khỏi phạm vi này. Xem xét ví dụ sau:
8
function
0Ví dụ #4 Ví dụ Thể hiện nhu cầu về các biến tĩnh
NULL object[stdClass]#1 [0] { }
Chức năng này khá vô dụng vì mỗi lần được gọi là đặt $ A thành
Static object: NULL Static object: NULL Static object: NULL Static object: object[stdClass]#3 [1] { ["property"]=> int[1] }8 và in
Static object: NULL Static object: NULL Static object: NULL Static object: object[stdClass]#3 [1] { ["property"]=> int[1] }8. $ A ++ tăng biến không phục vụ mục đích nào vì ngay khi hàm thoát ra khỏi biến $ A biến mất. Để tạo chức năng đếm hữu ích sẽ không mất dấu của số lượng hiện tại, biến $ một được khai báo tĩnh:
2
3
4Ví dụ #4 Ví dụ Thể hiện nhu cầu về các biến tĩnh
Static object: NULL Static object: NULL Static object: NULL Static object: object[stdClass]#3 [1] { ["property"]=> int[1] }
Chức năng này khá vô dụng vì mỗi lần được gọi là đặt $ A thành
Static object: NULL Static object: NULL Static object: NULL Static object: object[stdClass]#3 [1] { ["property"]=> int[1] }8 và in
Static object: NULL Static object: NULL Static object: NULL Static object: object[stdClass]#3 [1] { ["property"]=> int[1] }8. $ A ++ tăng biến không phục vụ mục đích nào vì ngay khi hàm thoát ra khỏi biến $ A biến mất. Để tạo chức năng đếm hữu ích sẽ không mất dấu của số lượng hiện tại, biến $ một được khai báo tĩnh:
Ví dụ #5 Ví dụ sử dụng các biến tĩnh ¶
Bây giờ, $ A chỉ được khởi tạo trong cuộc gọi đầu tiên của hàm và mỗi khi hàm
1 được gọi là nó sẽ in giá trị của $ a và tăng nó.
6
Các biến tĩnh cũng cung cấp một cách để đối phó với các hàm đệ quy. Một hàm đệ quy là một hàm tự gọi. Phải cẩn thận khi viết một hàm đệ quy vì có thể làm cho nó tái phát vô thời hạn. Bạn phải chắc chắn rằng bạn có một cách đủ để chấm dứt đệ quy. Hàm đơn giản sau đây được tính vào 10, sử dụng số lượng tĩnh $ để biết khi nào nên dừng: ¶
Ví dụ #6 biến tĩnh với các hàm đệ quy
7
8
9
global
0Các biến tĩnh có thể được gán các giá trị là kết quả của các biểu thức không đổi, nhưng các biểu thức động, chẳng hạn như các lệnh gọi hàm, sẽ gây ra lỗi phân tích cú pháp. ¶
Ví dụ #7 Khai báo các biến tĩnh
global
1
global
2
global
3
global
4
global
5Kể từ Php 8.1.0, khi một phương thức sử dụng các biến tĩnh được kế thừa [nhưng không được ghi đè], phương thức kế thừa giờ đây sẽ chia sẻ các biến tĩnh với phương thức mẹ. Điều này có nghĩa là các biến tĩnh trong các phương thức bây giờ hoạt động giống như các thuộc tính tĩnh. ¶
Ví dụ #8 Sử dụng các biến tĩnh trong các phương thức được kế thừa
global
6
global
7
global
8
global
9
global
0
global
1
global
2
global
3
global
4Khai báo tĩnh được giải quyết trong thời gian biên dịch. ¶
Ví dụ #6 biến tĩnh với các hàm đệ quy
global
5
global
6
global
7
global
4Các biến tĩnh có thể được gán các giá trị là kết quả của các biểu thức không đổi, nhưng các biểu thức động, chẳng hạn như các lệnh gọi hàm, sẽ gây ra lỗi phân tích cú pháp. ¶
Ví dụ #7 Khai báo các biến tĩnh
global
9
global
0
global
1
global
2Kể từ Php 8.1.0, khi một phương thức sử dụng các biến tĩnh được kế thừa [nhưng không được ghi đè], phương thức kế thừa giờ đây sẽ chia sẻ các biến tĩnh với phương thức mẹ. Điều này có nghĩa là các biến tĩnh trong các phương thức bây giờ hoạt động giống như các thuộc tính tĩnh. ¶
Ví dụ #8 Sử dụng các biến tĩnh trong các phương thức được kế thừa
global
3
global
4
global
5
global
6
global
7
global
8
global
4
9function
2Pogregoire ## Live.fr ¶ ¶
6 năm trước
function
3
function
4
function
5
function
6Jameslee at cs dot nmt dot edu ¶ ¶
17 năm trước
function
7
function
8
global
4Jake Dot Tunaley tại Berkeleyit Dot Com ¶ ¶
3 năm trước
Sum[]
0
{
global $a, $b;$b = $a + $b;
} Sum[];
echo $b;
?>
Sum[]
1
{
global $a, $b;$b = $a + $b;
} Sum[];
echo $b;
?>
Sum[]
2
{
global $a, $b;$b = $a + $b;
} Sum[];
echo $b;
?>
Sum[]
3
{
global $a, $b;$b = $a + $b;
} Sum[];
echo $b;
?>
global
4