Hướng dẫn scope trong php

Phạm vi của một biến được định nghĩa là phạm vi của nó trong chương trình mà nó có thể được truy cập. Nói cách khác, “Phạm vi của một biến là phần của chương trình mà trong đó nó được khai báo và có thể được truy cập.”

PHP có ba loại phạm vi biến:

  1. Biến cục bộ
  2. Biến toàn cục
  3. Biến tĩnh

  • 1. Biến cục bộ
  • 2. Biến toàn cục
    • Thí dụ:
    • Sử dụng $ GLOBALS cho biến toàn cục
  • 3. Biến tĩnh(static)
    • Thí dụ:

1. Biến cục bộ

Các biến được khai báo trong một hàm được gọi là biến cục bộ cho hàm đó. Các biến cục bộ này chỉ có phạm vi 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ộ.

Một biến khai báo bên ngoài hàm trùng tên hoàn toàn khác với biến khai báo bên trong hàm. Hãy cùng hiểu các biến cục bộ với sự trợ giúp của một ví dụ:

Tệp: local_variable1.php 

 

Đầu ra:

Local variable declared inside the function is: 45

Tệp: local_variable2.php

  

Đầu ra:

Web development language: PHP
Notice: Undefined variable: lang in D:cafedev\xampp\htdocs\program\p3.php on line 28

2. Biến toàn cục

Các biến toàn cục là các biến được khai báo bên ngoài hàm. Các biến này có thể được truy cập ở bất kỳ đâu trong chương trình. Để truy cập biến toàn cục trong một hàm, hãy sử dụng từ khóa GLOBAL trước biến. Tuy nhiên, các biến này có thể được truy cập trực tiếp hoặc sử dụng bên ngoài hàm mà không cần bất kỳ từ khóa nào. Do đó không cần sử dụng bất kỳ từ khóa nào để truy cập một biến toàn cục bên ngoài hàm.

Hãy cùng hiểu các biến toàn cục với sự trợ giúp của một ví dụ:

Thí dụ:

Tệp: global_variable1.php

";  
    }  
    global_var();  
    echo "Variable outside the function: ". $name;  
?>  

Đầu ra:

Variable inside the function: Sanaya Sharma
Variable outside the function: Sanaya Sharma

Lưu ý: Không sử dụng từ khóa global, nếu bạn cố gắng truy cập một biến toàn cục bên trong hàm, nó sẽ tạo ra lỗi rằng biến đó không được khai báo.

Thí dụ:

Tệp: global_variable2.php

";  
    }  
    global_var();  
?>  

Đầu ra:

Notice: Undefined variable: name in D:cafedev\xampp\htdocs\program\p3.php on line 6
Variable inside the function:

Sử dụng $ GLOBALS cho biến toàn cục

Một cách khác để sử dụng biến toàn cục bên trong hàm là dùng cú pháp mảng với biến $GLOBALS đã được khai báo trước.

Thí dụ:

Tệp: global_variable3.php

  

Đầu ra:

Sum of global variables is: 18

Nếu hai biến cục bộ và toàn cục, có cùng tên, thì biến cục bộ có mức độ ưu tiên cao hơn so với biến toàn cục bên trong hàm.

Thí dụ:

Tệp: global_variable2.php

  

Đầu ra:

Value of x: 7

Lưu ý: biến cục bộ có mức độ ưu tiên cao hơn biến toàn cục.

3. Biến tĩnh(static)

Đó là một tính năng của PHP để xóa biến, sau khi nó hoàn thành việc thực thi và bộ nhớ được giải phóng. Đôi khi chúng ta cần lưu trữ một biến ngay cả sau khi hoàn thành việc thực thi hàm. Do đó, một tính năng quan trọng khác của phạm vi biến là biến tĩnh. Chúng ta sử dụng từ khóa static trước biến để khai báo một biến và biến này được gọi là biến tĩnh .

Các biến static chỉ tồn tại trong một hàm cục bộ, nhưng nó không giải phóng bộ nhớ của nó sau khi việc thực thi chương trình rời khỏi phạm vi. Hãy cùng Hiểu nó với sự trợ giúp của một ví dụ:

Thí dụ:

Tệp: static_variable.php

";  
        echo "Non-static: " .$num2 ."
"; } //first function call static_var(); //second function call static_var(); ?>

Đầu ra:

Static: 4
Non-static: 7
Static: 5
Non-static: 7

Bạn sẽ nhận thấy rằng $num1 thường xuyên tăng lên sau mỗi lần gọi hàm, trong khi $num2 thì không. Đây là lý do tại sao vì $num1 không phải là một biến tĩnh, vì vậy nó giải phóng bộ nhớ của nó sau khi thực hiện mỗi lệnh gọi hàm.

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Tài liệu từ cafedev:

  • Full series tự học PHP từ cơ bản tới nâng cao tại đây nha.
  • Ebook về PHP tại đây.
  • Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

  • Group Facebook
  • Fanpage
  • Youtube
  • Instagram
  • Twitter
  • Linkedin
  • Pinterest
  • Trang chủ

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!