Każdą zmienną w PHP zapisuje się, poprzedzając jej nazwę znakiem dolara "$".
Wielkość liter w nazwie zmiennej jest rozróżniana.
Nazw zmiennych dotyczą te same reguły, co innych rodzajów nazw w PHP. Poprawna nazwa zmiennej zaczyna się
od litery lub znaku podkreślenia "_", po których może wystąpić dowolna ilość liter, cyfr lub znaków podkreślenia.
Zasięg widoczności zmiennych
Zasięg widoczności zmiennej jest zależny od miejsca, w jakim została zdefiniowana. Najczęściej
zmienne PHP widoczne są tylko w pojedynczym zasięgu. Taki zasięg rozciąga się na
pliki dołączane funkcjami include() i require(). Na przykład:
<?php
$a = 1; /* zasięg globalny */
function Test()
{
echo $a; /* odwołanie do zmiennej o zasięgu lokalnym */
}
Test();
?>
Ten skrypt nie wyświetli niczego, ponieważ instrukcja echo odwołuje się do zmiennej
lokalnej $a, której nie została przypisana żadna wartość. W PHP zmienne globalne muszą być jawnie określone
jako globalne wewnątrz funkcji, w której mają być użyte, do czego używamy słowa kluczowego global. Na przykład:
<?php
$a = 1;
$b = 2;
function Sum()
{ global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
Ten skrypt wyświetli wynik "3". Przez zadeklarowanie wewnątrz funkcji globalności
zmiennych $a i $b, wszystkie odwołania
do tych zmiennych będą odnosiły się do ich globalnych wersji. Nie ma żadnych ograniczeń
w ilości zmiennych globalnych, na których chcemy operować wewnątrz funkcji.
Jeszcze jedną ważną rzeczą, związaną z zasięgiem zmiennych jest zmienna statyczna.
Zmienna statyczna może mieć wyłącznie zasięg lokalny, ale nie traci swojej wartości, kiedy
program opuści ten zasięg lokalny, w którym dana zmienna statyczna się znajduje. Np.:
<?php
function Test()
{ static $a = 0;
echo $a;
$a++;
}
?>
Za każdym wywołaniem funkcji Test, zostanie wyświetlona wartość zmiennej $a,
po czym ta zmienna zostanie inkrementowana.
Zmienne spoza PHP
- Formularze HTML (GET i POST)
Kiedy do skryptu PHP zostanie wysłany formularz, każda zmienna z tego formularza
zostanie automatycznie dostarczona do tego skryptu przez PHP. Zmienne te będą umieszczone w tablicach asocjacyjnych:
$_POST zmienne wysłane metodą POST,
$_GET zmienne wysłane metodą GET i/lub
$_FILES plik wysłane metodą POST
w zależności od rodzaju zmiennych w zapytaniu.
Dyrektywa konfiguracyjna magic_quotes_gpc oddziałuje na zmienne
z Get, Post i Cookie. Jeśli jest włączona, to tekst (It's "PHP!") automagicznie zmieni
się w (It\'s \"PHP!\"). Jest to potrzebne przy wpisywaniu danych do baz danych.
Podobny efekt można uzyskać za pomocą funkcji addslashes() i stripslashes().
PHP obsługuje także tablice w kontekście zmiennych z formularzy.
Pozwala to na przykład pogrupować razem powiązane zmienne lub użyć tej możliwości do
pobrania wartości z pola wyboru (select) zmożliwością zaznaczenia wielu opcji.
- Ciasteczka HTTP
PHP bez problemu obsługuje ciasteczka HTTP. Ciasteczka są mechanizmem przechowywania
informacji w przeglądarce klienta w celu śledzenia lub identyfikowania stałych
bywalców strony. Ciasteczka ustawia się za pomocą funkcji setcookie().
Ciasteczka są częścią nagłówka HTTP, więc funkcja SetCookie musi być wywołana
zanim jakakolwiek inna informacja zostanie wysłana do przeglądarki. Takie samo
ograniczenie dotyczy funkcji header(). Wszystkie ciasteczka odebrane od klienta zostaną
automatycznie w zmienne $_COOKIE, podobnie jak dane odebrane metodą GET lub POST.
Jeśli chcesz przypisać wiele wartości do jednego ciasteczka, dodaj [] do jego nazwy.
- Zmienne środowiskowe
PHP automatycznie udostępnia wszystkie zmienne środowiskowe jako tablicę asocjacyjną $_ENV,
w której kluczami są nazwy zmiennych środowiskowych.
Zmienne predefiniowane
PHP udostępnia dla każdego pracującego skryptu dużą ilość predefiniowanych zmiennych.
Jednakże wiele spośród tych zmiennych jest zależne od rodzaju serwera,
jego wersji i ustawień i innych czynników. Niektóre
z tych zmiennych nie będą dostępne dla skryptów PHP uruchomionych z linii poleceń.
- $GLOBALS
Zawiera referencje do każdej ze zmiennych aktualnie dostępnych w zasięgu globalnym
skryptu. Kluczami tablicy są nazwy zmiennych globalnych.
- $_SERVER
Zmienne tworzone przez serwer lub bezpośrednio powiązane ze środowiskiem uruchomieniowym danego skryptu.
- $_GET
Zmienne dostarczone do skryptu za pomocą metodą GET protokołu HTTP.
- $_POST
Zmienne dostarczone do skryptu metodą POST protokołu HTTP.
- $_COOKIE
Zmienne dostarczone do skryptu przez ciasteczka HTTP.
- $_FILES
Zmienne dostarczone do skryptu przez przesłanie plików do serwera metodą POST protokołu HTTP.
- $_ENV
Zmienne dostarczone do skryptu przez środowisko operacyjne.
- $_REQUEST
Zmienne użytkownika dostarczone do skryptu przez każdy mechanizm wejścia,
przez co NIE są one godne zaufania. Obecność i kolejność
dołączania zmiennych do tej tablicy zależy od dyrektywy konfiguracyjnej variables_order.
- $_SESSION
Zmienne aktualnie zarejestrowane jako sesyjne.