Zmienna (variable) to oznaczony kontener, który przechowuje informacje. Informacje te mogą być pobierane i zmienianie w trakcie trwania programu, dlatego nazywamy je zmiennymi 😉 Każda zmienna musi posiadać unikalną nazwę, ponieważ to za pomocą nazwy będziemy odnosić się do informacji przechowywanych w zmiennej. W programowaniu rozróżniamy wiele typów informacji, np:
W niektórych językach podczas tworzenia zmiennej należy od razu zdefiniować typ wartości, które będą przechowywane wewnątrz zmiennej. W przypadku języka php, nie jest to wymagane. W trakcie wykonywania kodu, interpreter określa typ informacji na podstawie jej wartości,np:
<?php
$zmienna_typu_string = "Tekst";
$zmienna_typu_int = 12;
$zmienna_typu_double = 0.5;
$zmienna_typu_bool = true;
# wypisz typ zmiennej za pomocą metody gettype()
echo gettype($zmienna_typu_bool);
?>
W niektórych językach programowania, możemy deklarować zmienne, później przypisać do nich wartość. W przypadku języka php, powinniśmy od razu przypisać wartość do zmiennej poprzez znak przypisania (=), np:
$nrDomu = 34;
Oczywiście w czasie trwania aplikacji możemy zmieniać i nadpisywać informacje przechowywane w zmiennej, np:
$nrDomu = 44;
$nrDomu = 56;
$nrDomu = 42;
echo $nrDomu;
Często będziemy chcieli zmieniać zawartość zmiennej na podstawie aktualnej wartości, np. gdy chcemy zwiększyć zawartość portfela dwukrotnie. Zabiegi takie, czyli zmiana wartości na podstawie wartości aktualnej, nazywamy inkrementacją lub dekrementacją, w zależności od tego czy daną wartość zwiększamy czy zmniejszamy, np:
$stanKonta = 100;
$stanKonta += 20; # zwiększ stan konta o 20
$stanKonta -= 10; # zmniejsz stan konta o 10
$stanKonta *= 2; # zwiększ stan konta 2-krotnie
$stanKonta /= 4; # zmniejsz stan konta 4-krotnie
$stanKonta ++; # zwiększ stan konta o 1
$stanKonta --; # zmniejsz stan konta o 1
echo $stanKonta ;
Stałe, mają podobną funkcję co zmienne, ale nie można ich zmieniać w trakcie trwania programu. Definiujemy je na początku i taka wartość zostaje już do końca. Np. liczba PI i inne niezmienne wartości matematyczne, zazwyczaj zapisywane są jako stałe.
Aby zdefiniować stałą, używamy następującego syntaxu:
define(name,value);
Stała przyjmuje 2 argumenty, podajemy nazwę stałej (bez znaku dolara), a następnie jej wartość. Nazwy stałych należy zacząć od litery lub podkreślenia i zazwyczaj używa się tylko wielkich liter. Wcześniej, przed wersją php 8.0 można było tworzyć stałe case-insensitive, ale już się tego nie robi.
<?php
define("MSG", "To jest stała tekstowa");
echo MSG;
echo "<br>";
define("PI", 3.1416);
echo PI;
?>
Aby kod był bardziej przejrzysty i deskryptywny, należy używać przemyślanych nazw dla zmiennych, stałych i funkcji. Istnieje kilka sposobów tworzenia nazw złożonych z kilku wyrazów.
Sposobu zwanego camelCase możemy użyć do tworzenia zmiennych i polega on na tym, że pierwsza litera nazwy pisana jest z malej litery, a każde kolejne słowo piszemy z wielkiej litery, np: dataUrodzenia, markaPojazdu, wartoscPoczatkowa.
Czasami będziecie się spotykać też z rozdzielaniem wyrazów za pomocą podkreślenia, choć zazwyczaj ten sposób stosuje się do tworzenia nazw funkcji, np: oblicz_silnie, podnies_do_potegi, polacz_z_baza_danych, itd.
Konwencja zwana PascalCase, czasami używana jest do tworzenia klas. Polega ona na tym, że zarówno pierwszy wyraz jak i każdy kolejny zaczynamy od wielkiej litery, np: MojaKlasa, KolejnaBardzoWaznaKlasa 😉
Zmienne, które są tworzone wewnątrz bloku kodu, np funkcji, będą widoczne tylko wewnątrz tego bloku i będziemy określać ich zasięg jako lokalny. Żadna inna funkcja nie będzie w stanie się do niej odnieść. Jeśli chcemy stworzyć zmienną, która będzie dostępna dla kilku funkcji, możemy ją stworzyć w skrypcie, poza jakąkolwiek funkcją, wtedy przyjmie ona zasieg globalny i będzie dostępna dla inncyh funkcji. Poniżej przykład utworzenia zmiennych w zasiegu lokalnym i globalnym:
<?php
$stanKonta = 1000; // zasieg globalny
function jakas_funkcja(){
$kwotaDoZaplaty = 100; // zasięg lokalny
}
?>
Możliwe jest stworzenie zmiennej o takiej samej nazwie wewnątrz funkcji lub innego bloku bez jakiegokolwiek konfliktu, ponieważ domyślnie wewnątrz funkcji, będą brane pod uwagę zmienne lokalne, np: w przykładzie poniżej na ekranie wyświetli się liczba 200, czyli funkcja wyświetli zawartość zmiennej lokalnej.
<?php
$stanKonta = 1000; // zasieg globalny
function wyswietl_stan_konta(){
$stanKonta = 200; // zasięg lokalny
echo $stanKonta;
}
wyswietl_stan_konta();
?>
Do zmiennych globalnych możemy odwołać się z wnętrza funkcji, ale zanim to zrobimy, powinniśmy to zasygnalizować, że odnosimy się do tej zmiennej globalnej za pomocą słowa kluczowego global, np:
<?php
$stanKonta = 1000; // zasieg globalny
function wyswietl_stan_konta(){
global $stanKonta;
echo $stanKonta;
}
wyswietl_stan_konta();
?>
W php za pomocą $$ możemy odnieść się do nazwy zmiennej za pomocą jej wartości, ale aby to lepiej zrozumieć prześledźmy poniższy przykład:
<?php
$zmienna = 'zmienna2';
$zmienna2 = "Hejka";
echo $$zmienna;
?>
W przykładzie powyżej wyświetlamy zmienną o nazwie zmienna, ale nie widzimy na ekranie napisu 'zmienna2′. Zamiast tego, następuje przekierowanie do zmiennej o nazwie zmienna2 i to jej zawartość zostaje wyświetlona na ekranie. Można więc powiedzieć, że operator $$, pozwala tworzyć przekierowanie do nazwy zmiennej, która jest taka sama, jak zawartość zmiennej wywoływanej.