Hướng dẫn php global function - hàm toàn cầu php

Hướng dẫn php global function - hàm toàn cầu php

Nội dung chính

  • Video Biến siêu toàn cục trong PHP
  • Hướng dẫn chi tiết
  • Từ khóa global
  • Ví dụ 1: Sử dụng global
  • Ví dụ 2: Sử dụng $GLOBALS thay cho global
  • Ví dụ 3: Demo khả năng của siêu biến toàn cục
  • Sử dụng biến static
  • Ví dụ 4: demo sự cần thiết của biến static
  • Ví dụ 5: sử dụng biến tĩnh
  • Ví dụ 6: Biến tĩnh với hàm đệ quy
  • Ví dụ 7: Khai báo biến tĩnh
  • Tham chiếu với các biến global và static

Trong bài học này, chúng ta sẽ tìm hiểu về khái niệm biến siêu toàn cục trong PHP. Một vài biến được định nghĩa sẳn trong PHP là “superglobals”, nghĩa là chúng luôn có thể truy cập, bất chấp phạm vi và bạn có thể truy cập chúng từ bên bất kỳ hàm, class hoặc file.

  • Video Biến siêu toàn cục trong PHP
  • Hướng dẫn chi tiết
    • $GLOBALS
    • $_SERVER
      • Từ khóa global
      • Ví dụ 1: Sử dụng global
      • Ví dụ 2: Sử dụng $GLOBALS thay cho global

Video Biến siêu toàn cục trong PHP

Hướng dẫn chi tiết

Từ khóa global Các bạn cần hosting PHP - WordPress nhanh, rẻ và dễ sử dụng có thể chọn Azdigi nhé. Link đăng ký: NHẬN NGAY ƯU ĐÃI Nếu các bạn đăng ký hosting từ link quảng cáo, mình sẽ có một ít tiền để duy trì và "chai ni".

Ví dụ 1: Sử dụng global

$GLOBALS

Ví dụ 2: Sử dụng $GLOBALS thay cho global

Ví dụ 3: Demo khả năng của siêu biến toàn cục

Sử dụng biến static

Ví dụ 4: demo sự cần thiết của biến static

Ví dụ 5: sử dụng biến tĩnh Hosting WordPress nhanh, rẻ và dễ sử dụng có free SLL hãy chọn Azdigi nhé. Link đăng ký: NHẬN NGAY ƯU ĐÃI Nếu các bạn mua hosting từ link trên, mình sẽ có một ít tiền để duy trì. Cảm ơn

$_SERVER

Từ khóa global

Ví dụ 1: Sử dụng global

Ví dụ 2: Sử dụng $GLOBALS thay cho global

Ví dụ 1: Sử dụng global

Ví dụ 2: Sử dụng $GLOBALS thay cho global

Ví dụ 3: Demo khả năng của siêu biến toàn cục

  • Sử dụng biến static
  • Ví dụ 4: demo sự cần thiết của biến static

Ví dụ 2: Sử dụng $GLOBALS thay cho global

Ví dụ 3: Demo khả năng của siêu biến toàn cục

Sử dụng biến static

Ví dụ 4: demo sự cần thiết của biến static

Ví dụ 5: sử dụng biến tĩnh

Ví dụ 6: Biến tĩnh với hàm đệ quy

Ví dụ 7: Khai báo biến tĩnh

Tham chiếu với các biến global và static

Trong bài học này, chúng ta sẽ tìm hiểu về khái niệm biến siêu toàn cục trong PHP. Một vài biến được định nghĩa sẳn trong PHP là “superglobals”, nghĩa là chúng luôn có thể truy cập, bất chấp phạm vi và bạn có thể truy cập chúng từ bên bất kỳ hàm, class hoặc file.

Vài nét về HTTPDownload

$_SERVER là biến siêu toàn cục trong PHPcomment bên dưới, qua email, hoặc nhắn tin qua Fanpage Góc làm web.

Một số thành phần trong $_SERVER

"Thăm ngàn, kẹp ngần nhưng vẫn không đủ chai ni (trả nợ)" nên dành vài dòng cho QUẢNG CÁO Các bạn cần hosting PHP - WordPress nhanh, rẻ và dễ sử dụng có thể chọn Azdigi nhé. Link đăng ký: NHẬN NGAY ƯU ĐÃI Nếu các bạn đăng ký hosting từ link quảng cáo, mình sẽ có một ít tiền để duy trì và "chai ni".

$a 1;
include 
'b.inc';
?>

Các biến superglobal trong PHP là: $GLOBALS, $_SERVER, $_REQUEST, $_POST, $_GET, $_FILES, $_COOKIE, $_SESSION

$a 1/* phạm vi toàn cục */ 

function test()

    echo 
$a/* không sử dụng được biến toàn cục $a như thế này */ 

test();
?>

Ở đoạn mã trên thì ta không thể sử dụng được biến $a trong hàm test() như vậy, lúc này biến $a trong hàm test() lại được hiểu là biến cục bộ của chính hàm test() đó. Để khắc phục điều này thì ta cần phải sử dụng đến từ khóa global.

Từ khóa global

Ta xét một ví dụ sử dụng từ khóa global như sau:

Ví dụ 1: Sử dụng global

$a 1;
$b 2;

function

Sum()
{
    global 
$a$b;$b $a $b;

Sum();
echo 
$b;
?>

Đoạn mã trên sẽ in ra 3. $a và $b là các biến global vì chúng được khai báo ngoài hàm, và chúng được sử dụng trong hàm Sum() bằng cách khai báo lại và đặt từ khóa global để trình dịch hiểu chúng là các biến toàn cục. Một hàm có quyền sử dụng bất kỳ biến global nào và với số lượng tùy ý.

Ở ví dụ dưới đây thể hiện một cách khác để sử dụng biến toàn cục, đó là sử dụng mảng $GLOBALS được định nghĩa sẵn trong PHP:

Ví dụ 2: Sử dụng $GLOBALS thay cho global

$a 1;
$b 2;

function

Sum()
{
    
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];

Sum();
echo 
$b;
?>

Mảng $GLOBALS là mảng kết hợp với tên của biến toàn cục với giá trị mà biến toàn cục chứa, theo đó, mỗi biến toàn cục sẽ được hiểu là một phần tử của mảng này, với chỉ số của phần tử mảng chính là tên của biến toàn cục, còn giá trị của phần tử đó chính là giá trị của biến toàn cục. Lưu ý ta có thể sử dụng $GLOBALS ở bất kỳ đâu, đó là bởi vì nó là siêu biến toàn cục (superglobal). Dưới đây là một ví dụ demo về khả năng của siêu biến toàn cục:

Ví dụ 3: Demo khả năng của siêu biến toàn cục

$a 1/* phạm vi toàn cục */ 0

$a 1/* phạm vi toàn cục */ 1

$a 1/* phạm vi toàn cục */ 2

Lưu ý::

Không được sử dụng từ khóa global bên ngoài hàm, khi đó sẽ phát sinh lỗi. Tuy nhiên, ta có thể sử dụng điều này nếu nó nằm trong tập tin được gọi từ hàm.

Sử dụng biến static

Một đặc tính khác của phạm vi biến là biến static. Biến tĩnh chỉ dùng được trong hàm, tuy nhiên thì giá trị của nó không bị mất đi sau khi hàm được thực thi xong. Xét ví dụ sau:

Ví dụ 4: demo sự cần thiết của biến static

$a 1/* phạm vi toàn cục */ 3

Ở hàm trên thì câu lệnh $a++; tỏ ra không có tác dụng mỗi khi hàm được gọi, bởi vì mỗi khi được gọi thì giá trị của biến $a lại được đặt thành 0. Để khắc phục điều này thì ta chỉ cần khai báo biến $a là biến tĩnh:$a++; tỏ ra không có tác dụng mỗi khi hàm được gọi, bởi vì mỗi khi được gọi thì giá trị của biến $a lại được đặt thành 0. Để khắc phục điều này thì ta chỉ cần khai báo biến $a là biến tĩnh:

Ví dụ 5: sử dụng biến tĩnh

$a 1/* phạm vi toàn cục */ 4

Ở ví dụ trên, giá trị của biến $a vẫn được giữ lại, vì thế mỗi khi gọi hàm test() thì giá trị của $a lại tăng một đơn vị.

Biến tĩnh cũng cung cấp một cách để đối phó với hàm đệ quy. Hàm đệ quy là hàm có đặc điểm nó gọi đến chính nó. Cần hết sức cẩn thận khi sử dụng hàm đệ quy bởi vì nó có khả năng đệ quy vĩnh viễn. Bạn phải đảm bảo rằng bạn đã cung cấp cách để dừng đệ quy cho hàm. Ví dụ sau đây sẽ đếm từ 1 đến 10 sử dụng biến tĩnh $count:

Ví dụ 6: Biến tĩnh với hàm đệ quy

$a 1/* phạm vi toàn cục */ 5

Lưu ý::

Không được sử dụng từ khóa global bên ngoài hàm, khi đó sẽ phát sinh lỗi. Tuy nhiên, ta có thể sử dụng điều này nếu nó nằm trong tập tin được gọi từ hàm.

Sử dụng biến static

Một đặc tính khác của phạm vi biến là biến static. Biến tĩnh chỉ dùng được trong hàm, tuy nhiên thì giá trị của nó không bị mất đi sau khi hàm được thực thi xong. Xét ví dụ sau:

Lưu ý::

Không được sử dụng từ khóa global bên ngoài hàm, khi đó sẽ phát sinh lỗi. Tuy nhiên, ta có thể sử dụng điều này nếu nó nằm trong tập tin được gọi từ hàm.

Sử dụng biến static

Một đặc tính khác của phạm vi biến là biến static. Biến tĩnh chỉ dùng được trong hàm, tuy nhiên thì giá trị của nó không bị mất đi sau khi hàm được thực thi xong. Xét ví dụ sau:staticglobal theo hình thức là các tham chiếu. Ví dụ như một biến toàn cục được đưa vào trong một hàm với từ khóa global thì bản chất là tạo ra một tham chiếu tới biến toàn cục. Điều này có thể dẫn đến hành vi bất ngờ đối với các địa chỉ như ví dụ sau:

$a 1/* phạm vi toàn cục */ 7

function

$a 1/* phạm vi toàn cục */ 9

Ví dụ 4: demo sự cần thiết của biến static

Ở hàm trên thì câu lệnh $a++; tỏ ra không có tác dụng mỗi khi hàm được gọi, bởi vì mỗi khi được gọi thì giá trị của biến $a lại được đặt thành 0. Để khắc phục điều này thì ta chỉ cần khai báo biến $a là biến tĩnh:
object(stdClass)(0) {
}

Ví dụ 5: sử dụng biến tĩnh

function test()

    echo 
$a/* không sử dụng được biến toàn cục $a như thế này */ 
0

function test()

    echo 
$a/* không sử dụng được biến toàn cục $a như thế này */ 
1

function test()

    echo 
$a/* không sử dụng được biến toàn cục $a như thế này */ 
2

Ví dụ 4: demo sự cần thiết của biến static

Ở hàm trên thì câu lệnh $a++; tỏ ra không có tác dụng mỗi khi hàm được gọi, bởi vì mỗi khi được gọi thì giá trị của biến $a lại được đặt thành 0. Để khắc phục điều này thì ta chỉ cần khai báo biến $a là biến tĩnh:
Static object: NULL

Ví dụ 5: sử dụng biến tĩnh
Static object: object(stdClass)(1) {
["property"]=>
int(1)
}

Ở ví dụ trên, giá trị của biến $a vẫn được giữ lại, vì thế mỗi khi gọi hàm test() thì giá trị của $a lại tăng một đơn vị.