2012-04-25 35 views
7

Như chúng ta đã biết, từ khóa toàn cầu làm cho biến (hoặc đối tượng, mảng) có thể nhìn thấy bên trong chức năng hiện nay chúng ta đang đối phó vớitừ khóa toàn cầu bên ngoài hàm trong php

<?php 

$some_var = 'some string'; 

function __test(){ 
    global $some_var; 
    echo $some_var; // some string 
} 

Nhưng một số của dev vẫn sử dụng từ khóa outside global chức năng ở cái nhìn đầu tiên nó không có ý nghĩa với tôi.

Vâng, câu hỏi là: Liệu có ý nghĩa gì khi sử dụng từ khóa 'toàn cục' bên ngoài hàm ???

+0

Bạn có chắc chắn về phạm vi mà nó đang được sử dụng không? –

+0

Tôi đã thấy ngay cả trong tệp index.php, "global $ some_var" - thực sự nó sẽ không bao giờ nằm ​​trong bất kỳ hàm nào. Tôi chắc chắn về phạm vi – Yang

+0

@metal_fan Tôi nghi ngờ bạn đã thấy sự can đảm của một hàm trong một tệp riêng biệt. – Sampson

Trả lời

7

Từ docs:

Sử dụng từ khóa outside global một chức năng không phải là một lỗi. Nó có thể được sử dụng nếu tập tin được bao gồm từ bên trong một hàm.

Về cơ bản bạn có thể đảm bảo chức năng của mình trong một tệp khác với khai báo hàm của bạn. Những ruột này sau đó sẽ được đưa vào hàm. Điều này sẽ tạo ấn tượng, nếu bạn chỉ xem ruột, của người dùng sử dụng global bên ngoài chức năng, tuy nhiên thực tế là khi mã này được giải thích, nó sẽ được giải thích từ trong phạm vi một hàm.

$name = "Jonathan"; 

function doSomething() { 
    include('functionGuts.php'); 
} 

Trong trường hợp nội dung của file functionGuts.php của chúng tôi có thể là:

global $name; 
echo "Hello, " . $name; 

Khi xem trên riêng của mình, functionGuts.php sẽ cho ấn tượng rằng global đang được sử dụng bên ngoài của một hàm, trong khi thực tế nó là được sử dụng như thế này:

$name = "Jonathan"; 

function doSomething() { 
    global $name; 
    echo "Hello, " . $name; 
} 
0

Từ khóa bên ngoài chức năng không làm gì cả. nhưng tệp đó có thể được bao gồm trong một hàm.

Một điều tôi sử dụng nó không phải là làm cho mã của tôi có thể đọc được và có cấu trúc hơn. bất kỳ biến nào mà tôi muốn bo truy cập bằng cách sử dụng từ khoá toàn cầu trong một hàm, tôi khai báo nó bằng cách sử dụng toàn cục trong tệp chính, vì vậy chỉ cần lướt qua nhanh và tôi biết rằng nó được tham chiếu ở đâu đó dưới dạng toàn cục. (có nghĩa là không đổi tên dù sao đi nữa được sử dụng ở một nơi khác ... :))

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