Hướng dẫn what is global and local variable in php? - biến cục bộ và toàn cục trong php là gì?

Phạm vi biến PHP

Trong PHP, các biến có thể được khai báo ở bất cứ đâu trong tập lệnh.

Phạm vi của một biến là một phần của tập lệnh trong đó biến có thể được tham chiếu/sử dụng.

PHP có ba phạm vi biến khác nhau:

  • địa phương
  • toàn cầu
  • static

Phạm vi toàn cầu và địa phương

Một biến được khai báo bên ngoài một hàm có phạm vi toàn cầu và chỉ có thể được truy cập bên ngoài một hàm:outside a function has a GLOBAL SCOPE and can only be accessed outside a function:

Thí dụ

Biến với phạm vi toàn cầu:


?>

Hãy tự mình thử »

Một biến được khai báo trong một hàm có phạm vi cục bộ và chỉ có thể được truy cập trong chức năng đó:within a function has a LOCAL SCOPE and can only be accessed within that function:

Thí dụ

Biến với phạm vi toàn cầu:

Hãy tự mình thử »

Một biến được khai báo trong một hàm có phạm vi cục bộ và chỉ có thể được truy cập trong chức năng đó:

Biến với phạm vi cục bộ:

// Sử dụng X bên ngoài chức năng sẽ tạo ra một lỗi "biến X bên ngoài là: $ x";?>

Bạn có thể có các biến cục bộ có cùng tên trong các hàm khác nhau, bởi vì các biến cục bộ chỉ được nhận ra bởi hàm mà chúng được khai báo.

Thí dụ


echo $y; // outputs 15
?>

Hãy tự mình thử »

Một biến được khai báo trong một hàm có phạm vi cục bộ và chỉ có thể được truy cập trong chức năng đó:

Biến với phạm vi cục bộ:

Thí dụ


echo $y; // outputs 15
?>

Hãy tự mình thử »

Một biến được khai báo trong một hàm có phạm vi cục bộ và chỉ có thể được truy cập trong chức năng đó:

Biến với phạm vi cục bộ:

// Sử dụng X bên ngoài chức năng sẽ tạo ra một lỗi "biến X bên ngoài là: $ x";?>

Thí dụ

Hãy tự mình thử »

Một biến được khai báo trong một hàm có phạm vi cục bộ và chỉ có thể được truy cập trong chức năng đó:

Biến với phạm vi cục bộ: The variable is still local to the function.

// Sử dụng X bên ngoài chức năng sẽ tạo ra một lỗi "biến X bên ngoài là: $ x";?>



Phạm vi của một biến là bối cảnh trong đó nó được xác định. Đối với hầu hết các phần, tất cả các biến PHP chỉ có một phạm vi duy nhất. Phạm vi duy nhất này bao gồm và các tập tin cần thiết là tốt. Ví dụ:

Ở đây $ một biến sẽ có sẵn trong tập lệnh B.INC đi kèm. Tuy nhiên, trong các chức năng do người dùng xác định, một phạm vi chức năng cục bộ được giới thiệu. Bất kỳ biến nào được sử dụng bên trong một hàm theo mặc định giới hạn trong phạm vi hàm cục bộ. Ví dụ:

Tập lệnh này sẽ không tạo ra bất kỳ đầu ra nào vì câu lệnh ECHO đề cập đến phiên bản cục bộ của biến $ A và nó chưa được gán giá trị trong phạm vi này. Bạn có thể nhận thấy rằng điều này hơi khác một chút so với ngôn ngữ C trong các biến toàn cầu trong C được tự động có sẵn cho các chức năng trừ khi cụ thể được ghi đè bởi một định nghĩa cục bộ. Điều này có thể gây ra một số vấn đề ở chỗ mọi người có thể vô tình thay đổi một biến toàn cầu. Trong các biến toàn cầu PHP phải được khai báo toàn cầu bên trong một hàm nếu chúng sẽ được sử dụng trong hàm đó.

Từ khóa global

Đầu tiên, một ví dụ sử dụng global:

Ví dụ #1 sử dụng global

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object[stdClass]#3 [1] {
  ["property"]=>
  int[1]
}
2

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object[stdClass]#3 [1] {
  ["property"]=>
  int[1]
}
3

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object[stdClass]#3 [1] {
  ["property"]=>
  int[1]
}
4

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]
}
5. 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

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object[stdClass]#3 [1] {
  ["property"]=>
  int[1]
}
2

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object[stdClass]#3 [1] {
  ["property"]=>
  int[1]
}
3

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object[stdClass]#3 [1] {
  ["property"]=>
  int[1]
}
8

Mảng $ Globals là một mảng kết hợp với tên của biến toàn cầu là khóa và nội dung của biến đó là giá trị của phần tử mảng. Lưu ý cách $ Globals tồn tại trong bất kỳ phạm vi nào, điều này là do $ Globals là một siêu thị. Đây là một ví dụ chứng minh sức mạnh của Superglobals:

Ví dụ #3 Ví dụ chứng minh Superglobals và Phạm vi

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object[stdClass]#3 [1] {
  ["property"]=>
  int[1]
}
9

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

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:

Ví dụ #4 Ví dụ Thể hiện nhu cầu về các biến tĩnh

global2

Hàm này khá vô dụng vì mỗi lần được gọi là đặt $ A thành global3 và in global3. $ 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

global5

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 global6 được gọi là nó sẽ in giá trị $ 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

global7

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

global8

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

global9

Ghi chú::

Khai báo tĩnh được giải quyết trong thời gian biên dịch.

Tài liệu tham khảo với các biến globalstatic

PHP thực hiện công cụ sửa đổi tĩnh và toàn cầu cho các biến về mặt tham chiếu. Ví dụ, một biến toàn cầu thực sự được nhập trong phạm vi hàm với câu lệnh global thực sự tạo ra một tham chiếu đến biến toàn cầu. Điều này có thể dẫn đến hành vi bất ngờ mà ví dụ sau đây:

global3

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object[stdClass]#3 [1] {
  ["property"]=>
  int[1]
}
3

global5

Ví dụ trên sẽ xuất ra:

NULL
object[stdClass]#1 [0] {
}

Một hành vi tương tự áp dụng cho câu lệnh static. Các tài liệu tham khảo không được lưu trữ một cách thống trị:

global7

global8

global9

Ví dụ trên sẽ xuất ra:

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object[stdClass]#3 [1] {
  ["property"]=>
  int[1]
}

Một hành vi tương tự áp dụng cho câu lệnh static. Các tài liệu tham khảo không được lưu trữ một cách thống trị:

Ví dụ này chứng minh rằng khi gán một tham chiếu đến một biến tĩnh, nó không được nhớ khi bạn gọi hàm $GLOBALS[index]0 lần thứ hai.

Dodothedreamer tại Gmail Dot Com ¶

$GLOBALS[index]1

11 năm trước

Warheog tại Warhog Dot Net

$GLOBALS[index]2

$GLOBALS[index]3

$GLOBALS[index]4

$GLOBALS[index]5

16 năm trước

Michael Bailey [Jinxidoru tại BYU Dot Net] ¶

$GLOBALS[index]6

$GLOBALS[index]7

$GLOBALS[index]8

$GLOBALS[index]9

index0

18 năm trước

Andrew tại Planetubh Dot Com ¶

index1

index2

index3

index4

index5

index6

index7

index8

index9

13 năm trước

Warheog tại Warhog Dot Net

static0

static1

static2

index9

16 năm trước

Michael Bailey [Jinxidoru tại BYU Dot Net] ¶

static4

static5

static6

static7

18 năm trước

Andrew tại Planetubh Dot Com ¶

static8

static9

0

1

2

3

$GLOBALS[index]9

5

13 năm trước

Larax tại O2 dot pl ¶

6

7

8

9

index9

Gried tại Nospam Dot Nsys Dot của ¶

Larax tại O2 dot pl ¶

1

2

index9

Gried tại Nospam Dot Nsys Dot của ¶

Andrew tại Planetubh Dot Com ¶

4

5

$GLOBALS[index]4

7

13 năm trước

Michael Bailey [Jinxidoru tại BYU Dot Net] ¶

8

9

global0

global1

18 năm trước

Andrew tại Planetubh Dot Com ¶

global2

global3

index9

13 năm trước

Larax tại O2 dot pl ¶

global5

global6

global7

global8

index9

Biến toàn cầu và địa phương là gì?

Một biến toàn cầu là một biến có thể truy cập được trên toàn cầu. Một biến cục bộ là một biến chỉ có thể truy cập vào phạm vi hiện tại, chẳng hạn như các biến tạm thời được sử dụng trong một định nghĩa hàm duy nhất. A local variable is one that is only accessible to the current scope, such as temporary variables used in a single function definition.

Biến toàn cầu trong PHP là gì?

Các biến toàn cầu đề cập đến bất kỳ biến nào được xác định bên ngoài hàm.Các biến toàn cầu có thể được truy cập từ bất kỳ phần nào của tập lệnh, tức là bên trong và bên ngoài hàm.Vì vậy, một biến toàn cầu có thể được khai báo giống như biến khác nhưng nó phải được khai báo bên ngoài định nghĩa chức năng.any variable that is defined outside of the function. Global variables can be accessed from any part of the script i.e. inside and outside of the function. So, a global variable can be declared just like other variable but it must be declared outside of function definition.

Sự khác biệt giữa các biến địa phương và toàn cầu trong PHP là gì?

Sự khác biệt chính giữa các biến toàn cầu và cục bộ là các biến toàn cầu có thể được truy cập trên toàn cầu trong toàn bộ chương trình, trong khi các biến cục bộ chỉ có thể được truy cập trong hàm hoặc khối mà chúng được xác định.global variables can be accessed globally in the entire program, whereas local variables can be accessed only within the function or block in which they are defined.

Các biến cục bộ trong PHP là gì?

Các biến được khai báo trong một hàm được gọi là các biến cục bộ cho hàm đó.Các biến cục bộ này chỉ có phạm vi của chúng trong hàm cụ thể mà chúng được khai báo.Điều này có nghĩa là các biến này không thể được truy cập bên ngoài hàm, vì chúng có phạm vi cục bộ. are called local variables for that function. These local variables have their scope only in that particular function in which they are declared. This means that these variables cannot be accessed outside the function, as they have local scope.

Bài Viết Liên Quan

Chủ Đề