Có bao nhiêu phạm vi biến trong PHP

Các biến có "phạm vi" giới hạn hoặc "những nơi mà chúng có thể truy cập được". Chỉ vì bạn đã viết

3 một lần ở đâu đó trong đơn đăng ký của mình không có nghĩa là bạn có thể tham khảo 
4 từ mọi nơi khác trong đơn đăng ký. Biến 
4 có một phạm vi nhất định trong đó nó hợp lệ và chỉ mã trong cùng phạm vi đó mới có quyền truy cập vào biến

Phạm vi được định nghĩa như thế nào trong PHP?

Rất đơn giản. PHP có phạm vi chức năng. Đó là loại phân tách phạm vi duy nhất tồn tại trong PHP. Các biến bên trong một hàm chỉ khả dụng bên trong hàm đó. Các biến bên ngoài hàm có sẵn ở mọi nơi bên ngoài hàm, nhưng không có bên trong bất kỳ hàm nào. Điều này có nghĩa là có một phạm vi đặc biệt trong PHP. phạm vi toàn cầu. Bất kỳ biến nào được khai báo bên ngoài bất kỳ hàm nào đều nằm trong phạm vi toàn cầu này

Ví dụ

4 thuộc phạm vi toàn cục, 
7 thuộc phạm vi cục bộ bên trong 
8. Chỉ mã bên trong 
8 mới có quyền truy cập vào 
7. Chỉ mã bên ngoài 
8 mới có quyền truy cập vào 
4. Không có quyền truy cập vào khác

3d áp dụng cho bất kỳ mã nào khác. chỉ có phạm vi riêng biệt của 
4s. Với mục đích về phạm vi, bạn có thể nghĩ đến việc bao gồm các tệp như sao chép và dán mã

c. php

5 được đưa vào bên trong 
8, bất kỳ biến nào bên trong 
7 chỉ có phạm vi chức năng cục bộ. Chỉ vì chúng có vẻ nằm trong phạm vi toàn cầu trong 
7 không nhất thiết có nghĩa là chúng đúng như vậy, nó thực sự phụ thuộc vào ngữ cảnh mà mã đó được bao gồm/thực thi trong

Còn các hàm bên trong hàm và lớp thì sao?

Mỗi khai báo

4 mới giới thiệu một phạm vi mới, thật đơn giản

(ẩn danh) chức năng bên trong chức năng

function foo() {
    $foo = 'bar';

    $bar = function () {
        // no access to $foo
        $baz = 'baz';
    };

    // no access to $baz
}

các lớp học

$foo = 'foo';

class Bar {

    public function baz() {
        // no access to $foo
        $baz = 'baz';
    }

}

// no access to $baz

Phạm vi tốt cho là gì?

Xử lý các vấn đề về phạm vi có vẻ khó chịu, nhưng phạm vi biến giới hạn là điều cần thiết để viết các ứng dụng phức tạp. Nếu mọi biến bạn khai báo sẽ có sẵn từ mọi nơi khác trong ứng dụng của bạn, thì bạn sẽ lướt qua tất cả các biến của mình mà không có cách nào thực sự để theo dõi những thay đổi nào. Chỉ có rất nhiều tên hợp lý mà bạn có thể đặt cho các biến của mình, có thể bạn muốn sử dụng biến "

0" ở nhiều nơi. Nếu bạn chỉ có thể có tên biến duy nhất này một lần trong ứng dụng của mình, bạn sẽ phải sử dụng các lược đồ đặt tên thực sự phức tạp để đảm bảo các biến của bạn là duy nhất và bạn không thay đổi biến sai từ đoạn mã sai

Quan sát

function foo() {
    echo $bar;
}

Nếu không có phạm vi, chức năng trên sẽ làm gì? . Điều này đưa chúng ta đến

Vượt qua ranh giới phạm vi

đúng cách. truyền biến vào và ra

function foo($bar) {
    echo $bar;
    return 42;
}

Biến

1 rõ ràng đi vào phạm vi này dưới dạng đối số hàm. Chỉ cần nhìn vào chức năng này, rõ ràng các giá trị mà nó hoạt động bắt nguồn từ đâu. Sau đó, nó trả về một giá trị rõ ràng. Người gọi có đủ tự tin để biết hàm sẽ làm việc với những biến nào và giá trị trả về của nó đến từ đâu

$baz   = 'baz';
$blarg = foo($baz);

Mở rộng phạm vi biến thành các hàm ẩn danh

0

Hàm ẩn danh rõ ràng bao gồm

4 từ phạm vi xung quanh của nó. Lưu ý rằng điều này không giống với phạm vi toàn cầu

sai đường. 4

Như đã nói trước đây, phạm vi toàn cầu hơi đặc biệt và các hàm có thể nhập các biến từ nó một cách rõ ràng

1

Hàm này sử dụng và sửa đổi biến toàn cục

4. Đừng làm điều này. (Trừ khi bạn thực sự thực sự thực sự biết mình đang làm gì, và thậm chí sau đó. đừng. )

Tất cả những gì người gọi hàm này nhìn thấy là cái này

2

Không có dấu hiệu nào cho thấy chức năng này có bất kỳ tác dụng phụ nào, nhưng nó có. Điều này rất dễ trở thành một mớ hỗn độn vì một số chức năng liên tục sửa đổi và yêu cầu một số trạng thái toàn cầu. Bạn muốn các hàm không trạng thái, chỉ hoạt động trên đầu vào của chúng và trả về đầu ra đã xác định, tuy nhiên bạn gọi chúng nhiều lần

Bạn nên tránh sử dụng phạm vi toàn cầu càng nhiều càng tốt;

Biến là một phần quan trọng của bất kỳ ngôn ngữ lập trình nào. Bạn có thể sử dụng chúng để lưu trữ tất cả các loại thông tin như số nguyên, số float, chuỗi, mảng, nội dung của tệp, v.v. Dữ liệu được lưu trữ trong các biến sau đó có thể được thao tác bằng cách thêm hoặc xóa thông tin. Sử dụng các biến cũng cho phép chúng ta tạo các vòng lặp và thực hiện một số tác vụ lặp đi lặp lại. Bạn cũng có thể định nghĩa các hàm lấy các biến khác nhau làm đối số và trả lại dữ liệu mới

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về một khái niệm quan trọng được gọi là phạm vi biến và cách nó ảnh hưởng đến cách bạn viết mã trong PHP. Chúng tôi cũng sẽ đề cập đến việc sử dụng các từ khóa

2
75 và
2
76

Phạm vi biến là gì?

Các biến được sử dụng để lưu trữ và truy cập hoặc thao tác thông tin sau này, nhưng bạn không thể truy cập dữ liệu của chúng từ bất kỳ nơi nào bạn muốn. Một số biến có thể không truy cập được ở một số nơi, tùy thuộc vào ngôn ngữ lập trình bạn đang sử dụng

Nói một cách đơn giản, phạm vi của một biến xác định tính khả dụng của nó trong các phần khác nhau của chương trình

Phạm vi biến trong PHP

PHP có cách tiếp cận dễ hiểu và thân thiện với người mới bắt đầu đối với phạm vi biến

Về cơ bản, một biến bạn xác định ở đâu đó trong tệp PHP sẽ hiển thị hoặc có sẵn ở hầu hết mọi nơi sau khi nó được xác định. Bạn cũng sẽ có thể sử dụng nó trong các tệp khác được thêm vào chương trình bằng cách sử dụng

2
77 và
2
78

Giả sử có một tệp tên là biến. php và nó chứa đoạn mã sau

1
<?php
2
$apple_count = 12;
3
?>

Biến

2
79 cũng sẽ có sẵn trong một tệp khác với mã sau

1
39_______
2
include('variables.php');
3
<?php
1_______39_______2
<?php
3
<?php
4
<?php
5
?>

Tuy nhiên, biến này sẽ không khả dụng bên trong các hàm do người dùng định nghĩa. Đây là một ví dụ

1
39_______
2
include('variables.php');
3
<?php
2
<?php
1
<?php
3
2
5
<?php
5
2
7
2
8
2
9
$apple_count = 12;
0
$apple_count = 12;
1
$apple_count = 12;
2
$apple_count = 12;
3_______41_______4_______41_______5_______43_______

Vì vậy, các biến được xác định bên ngoài hàm do người dùng xác định không có sẵn trong hàm. Tương tự, các biến được xác định trong một hàm tồn tại ngay bên trong hàm đó. Đó là lý do tại sao chúng tôi nhận được thông báo khi chúng tôi cố lặp lại giá trị của

2
80 bên ngoài hàm
2
81 của mình

1
<?php
2
3
2
5
<?php
1
3
3
<?php
3
3
5
<?php
5
2
9
2
8
$apple_count = 12;
0
$apple_count = 12;
2
$apple_count = 12;
1
?>
2
$apple_count = 12;
3
$apple_count = 12;
5
?>
5
?>
6
?>
7
?>
8
?>
9
?>

Truy cập các biến bên trong hàm

Các chức năng thường yêu cầu một số dữ liệu đầu vào để làm điều gì đó hữu ích. Cách tốt nhất để làm điều đó là truyền thông tin cùng với việc sử dụng các tham số khác nhau trong định nghĩa hàm. Ví dụ, hàm

2
82 bên dưới lấy tham số là số tự nhiên

1
<?php
2
1
4_______42__________
1
6
<?php
1
<?php
3
1
9
<?php
5
2
9
2
8
$apple_count = 12;
0
<?php
4
$apple_count = 12;
1
<?php
6
$apple_count = 12;
3_______43_______

Nếu bạn cần lấy một biến từ bên ngoài và sử dụng nó bên trong một hàm, bạn có thể cân nhắc sử dụng từ khóa

2
75

Sử dụng từ khóa PHP 275 để truy cập các biến

Bạn có thể chỉ cần sử dụng từ khóa

2
75 trước bất kỳ biến nào để lấy giá trị của nó từ phạm vi toàn cầu. Khi bạn làm điều đó, bất cứ thứ gì được lưu trữ trong biến sẽ có sẵn bên trong hàm mà không cần chuyển nó dưới dạng tham số. Bạn cũng sẽ có thể thay đổi giá trị của biến bên trong hàm và các thay đổi sẽ được phản ánh ở mọi nơi

Đây là một ví dụ viết lại hàm

2
82 để sử dụng giá trị toàn cục là
2
87

1
<?php
2
3
2
3
<?php
1
<?php
3
2
6
<?php
5
2
8
2
8
1
6
$apple_count = 12;
0
$apple_count = 12;
1
1
9
$apple_count = 12;
3
2
9
$apple_count = 12;
5
?>
6
include('variables.php');
8
?>
8
<?php
6
?>
9
?>

Một trong những bất lợi lớn khi làm mọi thứ theo cách này là chúng ta không còn biết loại dữ liệu mà

2
82 dựa vào để tạo ra kết quả của nó. Giá trị của
2
87 cũng có thể được thay đổi ở bất kỳ đâu trong mã của bạn và nó sẽ ảnh hưởng đến đầu ra của lệnh gọi lại
2
82

1
<?php
2
3
2
3
<?php
1
<?php
3
2
6
<?php
5
2
8
2
8
1
6
$apple_count = 12;
0
$apple_count = 12;
1
1
9
$apple_count = 12;
3
$apple_count = 12;
5
<?php
20
?>
6
2
9
?>
8
?>
9
include('variables.php');
8
<?php
26
<?php
6
<?php
28
<?php
29
include('variables.php');
8
<?php
31
<?php
32
<?php
33
?>

Trong ví dụ trên, chúng ta không có cách nào biết điều gì đã thay đổi đầu ra của

2
82 mà không cần xem mã. Ở đây chúng ta vẫn có thể dễ dàng nhận ra rằng giá trị của
2
87 đã được tăng thêm 5 trong chính hàm đó. Tuy nhiên, điều này có thể không dễ dàng khi bạn đang xử lý một lượng lớn mã

Đó là lý do tại sao tốt hơn hết là tránh sử dụng toàn cầu bất cứ khi nào có thể

Sử dụng PHP 293 Superglobal để truy cập các biến

Một cách khác để truy cập các biến toàn cục bên trong một hàm là sử dụng hàm siêu toàn cầu

2
93. Điều này cũng cho phép bạn có một biến cục bộ có cùng tên với biến toàn cục

1
<?php
2
3
2
3
<?php
1
<?php
3
2
6
<?php
5
<?php
44
2
8
<?php
46
$apple_count = 12;
0
$apple_count = 12;
1
<?php
49
$apple_count = 12;
3
1
6
$apple_count = 12;
5
1
9
?>
6
2
9
?>
8
?>
9
include('variables.php');
8
<?php
26
<?php
6
<?php
28
<?php
62
<?php
29
?>

Các vấn đề khiến việc sử dụng từ khóa

2
75 trở thành một thông lệ không tốt cũng tồn tại đối với
2
93

Bạn nên cân nhắc việc tránh sử dụng các biến toàn cục càng nhiều càng tốt và chỉ sử dụng chúng nếu bạn không thể nghĩ ra bất kỳ cách nào khác để dễ dàng lấy dữ liệu từ một biến bên trong hàm cụ thể của mình

Một tình huống có thể hữu ích khi sử dụng

2
75 là khi bạn muốn theo dõi và cập nhật giá trị của một biến qua một số định nghĩa hàm khác nhau và muốn những thay đổi trong giá trị của biến được phản ánh ở mọi nơi

Biến tĩnh trong PHP

Các biến được định nghĩa bên trong một hàm trong PHP chỉ tồn tại trong phạm vi của hàm đó. Điều này có nghĩa là biến không còn khả dụng khi chúng ta thoát khỏi phạm vi cục bộ. Điều đó cũng có nghĩa là bất kỳ giá trị nào chúng ta gán cho một biến bên trong một hàm sẽ không tồn tại trong nhiều lần gọi hàm đó

1
<?php
2
1
4
3
<?php
70
<?php
1
1
6
<?php
3
<?php
5
1
9
2
8
$apple_count = 12;
0
<?php
78
$apple_count = 12;
1
<?php
80
$apple_count = 12;
3
2
9
$apple_count = 12;
5
?>
6
<?php
85
?>
8
<?php
87
?>
9
<?php
26
<?php
90
<?php
28
<?php
92
<?php
29
<?php
31
<?php
95
<?php
33
<?php
97
<?php
98
?>

Như bạn có thể thấy, chúng tôi gọi

2
82 ba lần trong ví dụ trên, nhưng giá trị của nó tiếp tục đặt lại thành 0 ở đầu các cuộc gọi của chúng tôi. Điều này khiến chúng tôi khó theo dõi số lần chúng tôi đã gọi cho
2
82

Một cách để khắc phục hạn chế này là sử dụng từ khóa

2
76. Bây giờ, giá trị của
$apple_count = 12;
01 sẽ tồn tại qua nhiều cuộc gọi, như được hiển thị trong ví dụ bên dưới

1
<?php
2
1
4
3
2
05
<?php
1
1
6
<?php
3
<?php
5
1
9
2
8
$apple_count = 12;
0
<?php
78
$apple_count = 12;
1
<?php
80
$apple_count = 12;
3
2
9
$apple_count = 12;
5
?>
6
<?php
85
?>
8
<?php
87
?>
9
<?php
26
<?php
90
<?php
28
2
27
<?php
29
<?php
31
<?php
95
<?php
33
2
32
<?php
98
2
34
2
35
2
36
?>
7
2
38
?>

Ví dụ trên cũng cho thấy rằng việc khai báo một biến là tĩnh trong PHP không làm cho nó khả dụng ngoài phạm vi của nó

Nếu bạn muốn truy cập giá trị của một biến bên ngoài chức năng của nó, cách tốt nhất để làm điều đó là sử dụng câu lệnh

$apple_count = 12;
02. Bạn có thể trả về bất kỳ loại giá trị nào như chuỗi, mảng, đối tượng, v.v.

1
<?php
2
1
4
3
2
05
<?php
1
1
6
<?php
3
<?php
5
1
9
2
8
$apple_count = 12;
0
<?php
78
$apple_count = 12;
1
$apple_count = 12;
3
2
56
$apple_count = 12;
5
2
9
?>
6
?>
8
<?php
85
?>
9
<?php
26
<?php
90
<?php
28
<?php
29
2
67
<?php
31
<?php
33
2
70
<?php
98
2
72
2
34
?>

Suy nghĩ cuối cùng

PHP có hai loại phạm vi cho các biến. Có một phạm vi toàn cầu chung, trong đó các biến bạn xác định trong chương trình có sẵn ở mọi nơi, như vòng lặp và các tệp khác bao gồm tệp có biến. Sau đó, có một phạm vi cục bộ cho các hàm do người dùng xác định, trong đó các biến được giới hạn cho hàm cụ thể đó

Tuy nhiên, điều này không ngăn cản sự di chuyển tự do của thông tin bên trong và bên ngoài các chức năng. Bạn có thể truy cập vào các biến bên ngoài không được bao gồm dưới dạng tham số trong hàm bằng cách sử dụng từ khóa

2
75. Tương tự, bạn có thể truy cập giá trị của một biến được xác định bên trong một hàm bằng cách sử dụng câu lệnh
$apple_count = 12;
02

Học PHP với một khóa học trực tuyến miễn phí

Nếu bạn muốn học PHP, hãy xem khóa học trực tuyến miễn phí của chúng tôi về các nguyên tắc cơ bản của PHP

Có bao nhiêu phạm vi biến trong PHP

Trong khóa học này, bạn sẽ học các nguyên tắc cơ bản của lập trình PHP. Bạn sẽ bắt đầu với những kiến ​​thức cơ bản, học cách PHP hoạt động và viết các hàm và vòng lặp PHP đơn giản. Sau đó, bạn sẽ xây dựng các lớp mã hóa để lập trình hướng đối tượng đơn giản (OOP). Đồng thời, bạn sẽ học tất cả các kỹ năng quan trọng nhất để viết ứng dụng cho web. bạn sẽ có cơ hội thực hành phản hồi các yêu cầu GET và POST, phân tích cú pháp JSON, xác thực người dùng và sử dụng cơ sở dữ liệu MySQL

4 loại phạm vi biến là gì?

Bạn sẽ tìm hiểu về bốn phạm vi khác nhau với sự trợ giúp của các ví dụ. cục bộ, kèm theo, toàn cầu và tích hợp sẵn . Các phạm vi này cùng nhau tạo thành cơ sở cho quy tắc LEGB được trình thông dịch Python sử dụng khi làm việc với các biến.

Có bao nhiêu phạm vi biến?

Phạm vi là một vùng của chương trình và nói chung có ba vị trí , nơi các biến có thể được khai báo. Bên trong một hàm hoặc một khối được gọi là biến cục bộ, Trong định nghĩa về tham số hàm được gọi là tham số hình thức. Bên ngoài tất cả các hàm được gọi là biến toàn cục.

Phạm vi của các biến PHP là gì?

Chỉ có hai phạm vi có sẵn trong PHP là phạm vi cục bộ và phạm vi toàn cầu. Khi một biến được truy cập bên ngoài phạm vi của nó, nó sẽ gây ra lỗi PHP Biến không xác định

Các loại biến trong PHP là gì?

Phạm vi biến .
Biến cục bộ
thông số chức năng
biến toàn cục
biến tĩnh