2012-04-22 58 views

Trả lời

2

Biến tĩnh chỉ ngụ ý rằng var thuộc về một lớp nhưng có thể được tham chiếu mà không cần phải khởi tạo lớp đã nói. Một var toàn cục tồn tại trong không gian tên chung và có thể được tham chiếu bởi bất kỳ hàm nào trong bất kỳ lớp nào. Vars toàn cầu luôn bị cau mày bởi vì chúng dễ bị lạm dụng, ghi đè, vô tình tham chiếu, v.v. Ít nhất với vars tĩnh bạn cần tham khảo qua Class::var;

+2

Cảm ơn đã giải thích với lớp: var, nhưng đối với bối cảnh này tôi lo ngại về biến tuyên bố TĨNH trong một chức năng –

1

Toàn cầu được sử dụng để lấy các vars toàn cầu có thể được xác định trong tập lệnh hoặc không nằm trong cùng phạm vi.

ví dụ:

<?php 

$g_var = 1; 

function test() { 
    var_dump($GLOBAL['g_var']); 

    global $g_var; 
    var_dump($g_var); 
} 

Tĩnh được sử dụng để xác định var có toàn bộ thời lượng tập lệnh và chỉ init một lần.

ví dụ:

<?php 

function test() { 
    static $cnt = 0; 
    $cnt ++; 
    echo $cnt; 
} 

$i = 10; 

while (-- $i) { 
    test(); 
} 
+0

vì vậy bạn có nghĩa là, toàn cầu có thể thay đổi bất cứ lúc nào nhưng tĩnh là loại liên tục ?? –

+1

@ Không biết không, tôi không có ý đó. tĩnh vaiable có thể được thay đổi một cách tự do. Nhưng thao tác init chỉ chạy một lần. Xem ví dụ của tôi, "static $ cnt = 0" chỉ chạy một lần, sau đó mỗi lần func gọi, biến được thêm bởi một. – wedgwood

Các vấn đề liên quan