Mam kod coś takiego:
<?
$a="localhost";
function body(){
global $a;
echo $a;
}
function head(){
global $a;
echo $a;
}
function footer(){
global $a;
echo $a;
}
?>
czy istnieje sposób na zdefiniowanie zmiennej globalnej w jednym miejscu i udostępnienie zmiennej jednocześnie $a
we wszystkich funkcjach? bez używania global $a;
więcej?
php
global-variables
global
LEKKI
źródło
źródło
global
słowo kluczowe, rozważ użycie$GLOBALS['a']
superglobal we wszystkich zakresach lub rozważ przekazanie parametru do swoich funkcji.Odpowiedzi:
$GLOBALS
Tablica może być stosowana zamiast:Z instrukcji :
Jeśli masz zestaw funkcji, które wymagają pewnych wspólnych zmiennych, klasa z właściwościami może być dobrym wyborem zamiast globalnej:
źródło
Jeśli zmienna nie ma się zmienić, możesz użyć
define
Przykład:
źródło
FOOTER_CONTENT
próbujesz zmienić? Czy jest tak jakfinal
w Javie czyconst
w C, C ++ i C #?Dodaj swoje zmienne w superglobalnej tablicy $ GLOBALS, takiej jak
i używaj go na całym świecie
lub możesz użyć stałych, które są dostępne w całym skrypcie
źródło
Jeśli zmienna jest zadeklarowana poza funkcją, jest już w zasięgu globalnym. Nie ma więc potrzeby deklarowania. Ale skąd wywołujesz tę zmienną, musi mieć dostęp do tej zmiennej. Jeśli dzwonisz z wnętrza funkcji, musisz użyć
global
słowa kluczowego:Używanie słowa kluczowego global poza funkcją nie jest błędem. Jeśli chcesz dołączyć ten plik do funkcji, możesz zadeklarować zmienną jako
global
.Możesz również użyć
$GLOBALS
. Jest superglobalny, więc ma dostęp wszędzie.W zależności od wyboru możesz wybrać jedną z nich.
źródło
Ta odpowiedź jest bardzo późna, ale to, co robię, to ustawiam klasę, która przechowuje wartości logiczne, tablice i początkowe wartości całkowite jako zmienne statyczne o zasięgu globalnym. Wszelkie ciągi stałe są definiowane jako takie.
Te
static
słowa kluczowe muszą być obecne w klasie przeciwnym razie vars $ a, $ b, $ c i nie będzie objęty zakresem globalnie.źródło
Odpowiedziałeś na to w sposób, w jaki napisałeś pytanie - użyj „zdefiniuj”. ale po ustawieniu nie możesz zmienić definicji.
Alternatywnie istnieją triki ze stałą w klasie, na przykład class :: constant, których możesz użyć. Możesz również uczynić je zmiennymi, deklarując właściwości statyczne w klasie, z funkcjami ustawiającymi właściwość statyczną, jeśli chcesz ją zmienić.
źródło
Możesz wypróbować słowo kluczowe
use
w funkcjach zamykania lub Lambdach jeśli pasuje to do twoich intencji ... chociaż PHP 7.0. Nie to jest lepsze, ale po prostu alternatywa.demo | info
źródło
Pomyślmy trochę inaczej:
I możesz go używać i modyfikować w dowolny sposób, na przykład:
źródło
A co, jeśli zamiast zmiennej użyjesz funkcji proceduralnej i wywołasz je gdziekolwiek, jak ty.
Zwykle tworzę zbiór wartości konfiguracyjnych i umieszczam je w funkcji z instrukcją return. Po prostu dołączam to, gdzie muszę wykorzystać globalną wartość i wywołać określoną funkcję.
źródło
$GLOBALS[]
to właściwe rozwiązanie, ale ponieważ mówimy o alternatywach, funkcja może również łatwo wykonać tę pracę:źródło
Nie powinieneś już używać globali, nie są one dostępne w PHP 5.4.
źródło