2012-04-25 15 views
7

Jak wiemy, globalny słów kluczowych sprawia, że ​​zmienna (lub obiektu, tablica) widoczne wewnątrz bieżącej funkcji mamy do czynienia zglobalny kluczowe zewnątrz funkcji w php

<?php 

$some_var = 'some string'; 

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

Ale niektóre dev wciąż wykorzystać globalną słowa kluczowego poza funkcjami na pierwszy rzut oka nie ma dla mnie żadnego sensu.

Cóż, pytanie brzmi: czy ma sens używanie słowa kluczowego "global" poza funkcją ???

+0

Czy jesteś pewien co do zakresu, w jakim jest używany? –

+0

Widziałem nawet w pliku index.php, "global $ some_var" - naprawdę to nigdy nie będzie w żadnej funkcji. Jestem pewien co do zakresu – Yang

+0

@metal_fan Podejrzewam, że widziałeś odwagę funkcji w osobnym pliku. – Sampson

Odpowiedz

7

Z docs:

Korzystanie globalnego słowa kluczowego poza funkcją nie jest błędem. Można go użyć, jeśli plik znajduje się wewnątrz funkcji.

Zasadniczo możesz mieć odwagę funkcji w innym pliku niż deklaracja funkcji. Te wnętrzności zostaną włączone do tej funkcji. Dałoby to wrażenie, że jeśli widzisz same wnętrzności, użytkownik korzystający z funkcji global poza funkcją, jednak faktem jest, że kiedy ten kod zostanie zinterpretowany, będzie interpretowany jako w ramach funkcji.

$name = "Jonathan"; 

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

gdzie zawartość naszego pliku functionGuts.php mogą być:

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

Patrząc na własną rękę, functionGuts.php będzie sprawiać wrażenie, że global jest używany poza funkcją, podczas gdy w rzeczywistości jest to istota używany w ten sposób:

$name = "Jonathan"; 

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

Globalne słowo kluczowe poza funkcjami nic nie robi. ale ten plik może być zawarty w funkcji.

Inną rzeczą, której używam nie jest, aby moje kody były czytelne i bardziej uporządkowane. dowolną zmienną, do której chcę uzyskać dostęp za pomocą słowa kluczowego globalnego w funkcji, deklaruję ją w pliku głównym jako globalną, więc wystarczy krótkie spojrzenie i wiem, że jest ona określana jako globalna. (co oznacza, że ​​nie zmieniaj nazwy w żaden inny sposób, ponieważ inne są używane gdzieś indziej ... :))

Powiązane problemy