Phạm vi biến trong PHP

PHP
php

Phạm vi biến là gì, các loại phạm vi biến trong PHP

– Trong PHP, các biến có thể được khai báo ở bất kỳ ví trí nào trong tập lệnh, tùy thuộc vào vị trí được khai báo mà biến sẽ có “phạm vi biến” khác nhau, phạm vi biến dùng để ám chỉ nơi mà biến có thể được tham chiếu, sử dụng.

– Trong PHP có ba loại phạm vi biến khác nhau như sau:

  • global (toàn cầu, toàn cục)
  • local (cục bộ)
  • static (tĩnh)

Phạm vi toàn cục (global)

– Nếu một biến được khai báo bên ngoài hàm thì biến đó sẽ có “phạm vi toàn cục”, nó chỉ có thể được truy cập từ bên ngoài hàm.

Ví dụ:

Biến $a được khai báo bên ngoài hàm myTest, cho nên nó sẽ có phạm vi toàn cục, nó chỉ có thể được truy cập bên ngoài hàm, nếu ta truy cập nó bên trong hàm myTest thì sẽ xảy ra lỗi.

<?php
    $a = 100; //phạm vi toàn cục
    function myTest(){
        //sử dụng biến $a trong hàm này sẽ xảy ra lỗi
        echo "<p>Biến a bên TRONG hàm là: $a</p>";
    }
    myTest();
    echo "<p>Biến a bên NGOÀI hàm là: $a</p>";
?>

Phạm vi cục bộ (local)

– Nếu một biến được khai báo bên trong hàm thì biến đó sẽ có “phạm vi cục bộ”, nó chỉ có thể được truy cập ở bên trong hàm mà nó được khai báo.

Ví dụ:

Biến $a được khai báo bên trong hàm myTest, cho nên biến $a có phạm vi cục bộ, nó chỉ có thể được truy cập bên trong hàm myTest, nếu ta truy cập nó từ bên ngoài hàm myTest thì sẽ xảy ra lỗi.

<?php
    function myTest(){
        $a = 100; //phạm vi cục bộ
        echo "<p>Biến a bên TRONG hàm là: $a</p>";
    }
    myTest();
    //sử dụng biến $a bên ngoài hàm sẽ sinh ra lỗi
    echo "<p>Biến a bên NGOÀI hàm là: $a</p>";
?>

Lưu ý: Chúng ta có thể có các “biến cục bộ” trùng tên trong các hàm khác nhau, bởi vì các biến cục bộ chỉ được công nhận bởi hàm mà chúng được khai báo.

Từ khóa global trong PHP

– Chức năng của từ khóa global là dùng để cho phép chúng ta truy cập các “biến toàn cục” từ bên trong một hàm.

– Để thực hiện được điều đó thì ở bên trong hàm, các bạn hãy dùng từ khóa global gọi đến các biến toàn cục trước khi sử dụng chúng.

Ví dụ:

<?php
    $a = 30;
    $b = 70;
    function myTest(){
        global $a, $b;
        $b = $a + $b;
    }
    myTest();
    echo $b; //Xuất ra giá trị 100
?>

– Ngoài ra thì PHP cũng lưu trữ các biến toàn cục trong một mảng gọi là $GLOBALS[index]. Trong đó, index giữ tên của biến, nó có thể được truy cập từ bên trong các hàm và có thể dùng để cập nhật trực tiếp các biến toàn cục.

– Ví dụ phía trên có thể được viết lại như sau:

<?php
    $a = 30;
    $b = 70;
    function myTest(){
        $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
    }
    myTest();
    echo $b; //Xuất ra giá trị 100
?>

Từ khóa static trong PHP

– Thông thường, khi một hàm hoàn thành việc thực thi, các biến của nó sẽ bị xóa. Tuy nhiên, đôi lúc chúng ta muốn giữ lại những biến này để phục vụ cho các công việc xa hơn.

– Để làm được điều đó, các bạn hãy sử dụng từ khóa static khi khai báo biến lần đầu tiên:

<?php
    function myTest(){
        static $a = 0;
        echo $a;
        $a++;
    }
    myTest();
    myTest();
    myTest();
?>

– Khi một biến được thiết lập từ khóa static, sau mỗi lần hàm được gọi thì biến vẫn có thông tin về giá trị mà nó chứa từ lần cuối cùng hàm được gọi.

Lưu ý: Biến vẫn là biến cục bộ của hàm.