Kursy mojej produkcji
<?php
$zmienna1 = ''; // Pusta zmienna
$zmienna2 = 'dziwne literki'; // zmienna z zawartością
?>
Powyższy kod tworzy dwie zmienne. Pierwsza nazywa się $zmienna1 i jest pusta. Druga otrzymała nazwę $zmienna2 i jej zawartość to dziwne literki. Jak widzicie zmienne zaczynają się od znaku $. Jeżeli przypisujemy im jakieś wartości to stosujemy znak =, a zaraz po nim żądana zawartość włożoną w cudzysłowy i kończymy znakiem ; czyli średnika. To w największym skrócie. Pamiętajmy, że nazwa zmiennej musi zaczynać się od litery bądź znaku podkreślenia. W nazwie dopuszczone są litery a-z, A-Z, 0-9 oraz znaki ASCII z zakresu 127-255.
<?php
$zmienna = 'pierwsza linia\ndruga linia'; // \n nie zostanie zinterpretowane
echo $zmienna;
echo "<hr />\n";
$zmienna = "pierwsza linia\ndruga linia"; // znak nowej linii zostanie zinterpretowany
echo $zmienna;
?>
Po odpaleniu skryptu zobaczymy, że po wyrzuceniu zmiennej za pierwszym razem \n nie zostało zinterpretowane natomiast za drugim razem już tak. To jest zasadnicza różnica miedzy ' i ".
<?php
$dodatkowa_zmienna = 'PHP';
$ciag_znakow = 'To jest $dodatkowa_zmienna';
echo $ciag_znakow;
?>
Efektem działania powyższego skryptu będzie ciąg To jest $dodatkowa_zmienna.
<?php
$dodatkowa_zmienna = 'PHP';
$ciag_znakow = "To jest $dodatkowa_zmienna";
echo $ciag_znakow;
?>
Efektem działania powyższego kodu będzie ciąg To jest PHP.
<?php
$dodatkowa_zmienna = 'PHP'; // i tak nie wykorzystamy
$ciag_znakow = "To jest \$dodatkowa_zmienna";
echo $ciag_znakow;
?>
W pojedynczym cudzysłowu $dodatkowa_zmienna pozostanie jedynie zestawem znaków, a w podwójnym zostanie zinterpretowana i do tworzonego stringu zostanie wrzucona jej zawartość. Musimy pamiętać, że używanie apostrofu jest nieco szybsze od używania cudzysłowu. Ma to znaczenie przy większych projektach. Więcej informacji o optymalizacji w dalszej części kursu.
<?php
$zmienna = 'Jestem '.'sobie'.' zmienna';
echo $zmienna;
?>
Kod:<?php
$x1 = 'soczek';
$x2 = 'warzywa';
$zmienna = 'Lubię '.$x1.' i '.$x2;
echo $zmienna;
?>
Kod:<?php
$x1 = 'soczek';
$x2 = 'warzywa';
$zmienna = 'Lubię ' . $x1 . ' i ' . $x2; // spacje "zwiększające" czytelność kodu
echo $zmienna;
?>
<?php
$x = 10;
$y = 10;
?>
Przeanalizujmy powyższy kod. Tworzymy zmienna $x o wartości 10 oraz zmienna $y także o wartości 10. Możemy zrobić to także w inny sposób.
<?php
$x = 10;
$y = $x; // przypisujemy zmiennej $y wartość pochodzącą od zmiennej $x
?>
Naturalnie za każdym tworzymy kolejny obiekt. Możemy także lekko zoptymalizować ten proces robiąc cos w tym stylu:
<?php
$x = $y = 10;
?>
Przechodząc do sedna sprawy miesimy zająć się referencją. Oto i ona.
<?php
$x = 10;
$y = &$x;
// operacja na referencji
$y = 5;
echo '$x = '.$x.', $y = '.$y;
?>
Jak zauważyliście obie zmienne maja wartość 5 mimo, że tylko jednej zmienialiśmy wartość. Na tym polega referencja.
<?php
// Troszke mało logiczne pod względem gramatyki polskiej ale liczy się przykład
$smak = "pomarańczy"; // Czy powinienem robić tutaj kryptoreklame?
echo "Jasio lubi smak $smak'y"; // Znak ' jest niedozwolonym znakiem w nazewnictwie zmiennej dlatego tez zostanie zignorowany przy interpretacji nazwy zmiennej
echo "<br />";
echo "Siostra Jasia bardzo lubi smak $smaki"; // Nie zadziała bo parser PHP będzie szukał zmiennej $smaki
echo "<br />";
echo "Jasio zasmakował ${smak}y";
echo "<br />";
echo "Jasio delektuje się smakiem {$smak}y";
?>
Tak więc używając klamer PHP nie musimy wyłamywać się z konstrukcji ciągu. Ostatecznie dla czytelności mogliśmy zrobić to w ten sposób:
<?php
$smak = "pomarańczy"; // Czy powinienem robić tutaj kryptoreklame?
echo "Siostra Jasia bardzo lubi smak ".$smak;
?>
<?php
$ciag = <<<EOT
To jest przykładowy ciąg
posiadający wiele linii
używający składni heredoc.
EOT;
echo $ciag;
?>
<?php
$autor = "CapaciousCore";
$nazwa_zmiennej = "autor";
echo $$nazwa_zmiennej; // Zwróć uwagę na podwójnego dolara
?>
Jak widzicie możemy odwołać się do zmiennej, której nazwa jest zawartością innej zmiennej. Brzmi nieco jak masło maślane lecz czasami jest to przydatna cecha gdy odwołujemy się np. do nazw funkcji.