30 dniowy kurs PHP – dzień 3 – zmienne


Back-end (php, mysql)

W php jednym z fundamentalnych elementów są zmienne. Żeby zobrazować Ci bardziej ten termin wyobraź sobie, że tworzysz na pulpicie nowy dokument tekstowy. Nazywasz go np. nr telefonu do mojej dziewczyny. W środku rzecz jasna w samym dokumencie piszesz nr. Następnie tworzysz nowy dokument o nazwie mój ulubiony program w telewizji i piszesz w nim „zagadki wszechświata z Morganem Freemanem”.

Teraz w dowolnym momencie możesz otworzyć wybrany dokument i sprawdzić jego zawartość. Ale to nie wszystko, program telewizyjny może Ci się przecież znudzić, więc zmieniasz jego nazwę w dokumencie. Dziewczyny nie musisz zmieniać, wystarczy że ona zmieni swój nr telefonu ;)

Poprawne nazewnictwo

Przełóżmy to teraz na php. Zmienne w php możesz nazywać dowolnie, są jednak pewne standardy i niedozwolone znaki. Nie możesz używać spacji, zmienna nie może zaczynać się liczbą. W nazwie dozwolone są tylko litery, liczby i podkreślenia ( _ ). Sprawdź jak wygląda to w praktyce. Uruchom WAMPa, utwórz nowy folder dzien3, a w nim plik index.php. W pliku umieść następujące dane:

<?php

$przykladowaZmienna = 'wartość zmiennej'; //poprawna nazwa zmiennej
$123zmienna = 'wartość zmiennej'; //błędna nazwa
$zmienna123 = 'wartość zmiennej'; //poprawna nazwa
$_zmienna = 'wartość zmiennej'; //poprawna nazwa

?>

Jak pewnie zauważyłeś KAŻDA zmienna rozpoczyna się znakiem dolara. $ daje wyraźnie polecenie pt. utwórz zmienną o nazwie, po czym wpisujesz dowolną nazwę po znaku dolara. Następnie mamy znak równości oraz (podobnie jak w poznanej już funkcji echo) treść w cudzysłowu. Całe polecenie zakończone średnikiem.

Napiszmy teraz polecenie, które wyświetli wartość ze zmiennej.

<?php

$nrTelefonu = '123-456-789';

echo $nrTelefonu;

?>

W przeglądarce powinien wyświetlić się podany nr telefonu. Zauważ kilka bardzo istotnych elementów: przy wywołaniu funkcji echo nie użyliśmy już cudzysłowu. Jeśli bowiem użyjesz pojedynczego cudzysłowu przy zmiennej zostanie ona potraktowana jako tekst, który chcesz wyświetlić. Sprawdź:

<?php

$nrTelefonu = '123-456-789';

echo '$nrTelefonu'; //wyświetli $nrTelefonu

?>

W tym miejscu musisz zrozumieć bardzo ważną rzecz. PHP traktuje dane zawarte w środku pojedynczych cudzysłowów jako tekst. Natomiast jeśli użyjesz podwójny cudzysłów PHP wyświetli poprawnie tekst oraz przetworzy go w poszukiwaniu zmiennych. Jeśli takie znajdzie zostanie wyświetlona ich zawartość.

<?php

$nrTelefonu = '123-456-789';

echo "Mój nr telefonu to $nrTelefonu"; //wyświetli Mój nr telefonu to 123-456-789

?>

Z reguły zaleca się używanie pojedynczych cudzysłowów, gdyż nie angażuje to mocy obliczeniowej wymaganej do przetwarzania tekstu w poszukiwaniu zmiennej. Zauważalne różnice w wydajności wykonywania skryptów są rzecz jasna bardzo niewielkie, ale przy złożonych projektach optymalizacja kodu jest bardzo istotna.

Łączenie elementów

Jeśli więc zaleca się stosowanie pojedynczych cudzysłowów jak umieścić zmienną w sąsiedztwie tekstu? Poniższe rozwiązanie wyświetli błąd:

<?php

$nrTelefonu = '123-456-789';

echo 'Mój nr telefonu to' $nrTelefonu; //Błąd: Parse error: parse error...

?>

Aby połączyć tekst ze zmienną lub kilka zmiennych razem musisz użyć kropki.

<?php

$tekst = 'Mój nr telefonu to ';
$nrTelefonu = '123-456-789';

echo $tekst . $nrTelefonu . ' zadzwoń!';

?>

Jeśli nie widzisz polskich znaków musisz użyć kodowania, czyli wklej całą składnię html, doctype itp. i ustaw kodowanie w meta charset.

Odstępy pomiędzy zmiennymi i kropkami są bez znaczenia tj. możesz wpisać $zmienna.$zmienna2 lub $zmienna      .       $zmienna2 i w obu przypadkach tekst zostanie wyświetlony tak samo. Jeśli chcesz natomiast użyć spacji musisz albo umieścić ją jako dodatkowy tekst i zawrzeć spację w cudzysłów, przykład:

<?php

echo 'tekst teskt' . ' ' . 'tekst tekst';

?>

Albo uwzględnić odstęp dodając spację w wartości zmiennej, tak jak w poprzednim przykładzie w zmiennej $tekst = ‚Mój nr telefonu to ‚;

Nadpisywanie zmiennych

Nazwa zmiennej musi być unikalna. Jeśli powtórzysz nazwę tworząc kolejną zmienną, poprzednia zostanie nadpisana. Przykład:

<?php

$owoce = 'arbuzy';

echo 'Uwielbiam ' . $owoce; //wyświetli Uwielbiam arbuzy

$owoce = 'brzoskwinie';

echo 'Uwielbiam '. $owoce; //wyświetli Uwielbiam brzoskwinie

?>

Zmienne mają bardzo szerokie zastosowanie i niesamowicie ułatwiają pracę. Jeśli w twoim skrypcie jedna rzecz przewija się wiele razy łatwiej umieścić ją w zmiennej i później odwoływać się tylko do niej, niż za każdym razem kopiować ciąg tekstu czy kodu. Dodatkowo zmiana wartości zmiennej skutkuje zmianą w każdym miejscu, w którym się do niej odwołaliśmy. Nie trzeba więc ręcznie zmieniać w każdym miejscu tych samych danych.

Wstawianie HTML

Na koniec bardzo istotna kwestia. Jeśli wstawiasz kod html wewnątrz php (obojętnie czy jako tekst, czy jako zmienną) wstawiaj go w pojedynczym cudzysłowie.

<?php

$html = '<div style="background:red;color:#fff;">Div z czerwonym backgroundem</div>';

echo $html;

?>

Wstawiając bowiem html w podwójny cudzysłów musiałbyś htmlowe podwójne cudzysłowy zamieniać na pojedyncze. W innym wypadku php skończy przyjmowanie wartości zmiennej w momencie pojawienia się drugiego cudzysłowu.

<?php

echo "<div style="background:red;color:#fff;">Div z czerwonym backgroundem</div>";
//Parse error...

?>

W powyższym przykładzie zostanie wyświetlony błąd, gdyż w miejscu style=” php „myśli” że jest to już koniec danych które chcesz wyświetlić i nie jest w stanie zinterpretować dalszego ciągu znaków. Użycie pojedynczego cudzysłowu w funkcji echo załatwia tutaj sprawę.