Kurs PHP (część 1): podstawowy opis języka

Artykuł dodany: 23 grudnia 2011. Ostatnia modyfikacja: 13 marca 2014.

Stopień trudności (1 - dla początkujących, 5 - dla ekspertów): 1

Nieważne czy jesteś początkującym stawiającym swe pierwsze kroki w programowaniu, czy tworzyłeś już proste strony w oparciu o CSS i HTML. Prędzej czy później będziesz potrzebował połączenia z bazą danych, wysłania maila bądź przetworzenia pliku XML. W “gołym” HTML tego nie zrobisz tak więc zajdzie potrzeba aby zwrócić się w kierunku jednego z dostępnych na rynku języków programowania. A wybór jest ogromny. Zaczynając od technologii (płatnych) Microsoftu i całą platformę .NET, przez dający ogromne możliwości język Java (i pamiętaj że Java to nie to samo co JavaScript), Groovy, Scala, Gosu, Ruby, Perl, Python, PHP i w końcu cała lista tutaj nie wymienionych. Sam musisz ocenić który język Tobie najbardziej przypada do gustu, w którym zrealizujesz swoje ambicje a w przyszłości, dzięki zdobytej wiedzy, zaczniesz zarabiać. Ustalenie tych priorytetów nie jest celem artykułu a jeśli Twój wybór padł na PHP możesz spokojnie czytać dalej. PHP jest praktycznie wszędzie. Wynika to z jego prostoty (choć niektórzy zarzucają mu pewne błędy logiczne), tego że łatwo w nim pisać ot tak, nie będąc guru w kilku innych dziedzinach. Ale przede wszystkim wypracowane przez lata darmowe bądź płatne aplikacje. Wordpress, Invision Power Board, osCommerce, Magento, phpBB, Drupal, Joomla, Mantis – to tylko wierzchołek góry lodowej. Większość hostingów opiera swój biznes na PHP co sprawia, że postawienie i utrzymanie strony jest tanie, niejednokrotnie nawet darmowe. Ale zacznijmy od początku.

Środowisko pracy

Być może słyszałeś wcześniej o stosie LAMP. Linux Apache MySQL PHP. Przez lata te 4 litery były wyznacznikiem trendów. Linux to oczywiście system operacyjny, ale nie przejmuj się. Całe oprogramowanie działa bez problemów również na Windows. Serwer Apache obsługuje zapytania klienta (przeglądarki) odsyłając przetworzone przez interpreter PHP dane, MySQL to baza danych. Skrypty PHP możesz również wykonywać bezpośrednio z wiersza poleceń aczkolwiek najczęstszym zastosowaniem to oczywiście obsługa przez webserver. Na marginesie powiem że w świecie serwerów coraz lepiej radzi sobie Nginx który ostatnio w statystykach wyprzedził nawet IIS, często wykorzystywany jest też Lighttpd. Serwery te lepiej radzą sobie z większym obciążeniem zwłaszcza gdy należy serwować pliki statyczne. Jednak tym nie musisz się przejmować dopóki Twoja strona nie zacznie generować milionów odsłon dziennie i będziesz zmuszony pomyśleć nad rozwiązaniem dedykowanym. Podobnie sytuacja ma się z serwerem bazy danych. Choć od lat najpopularniejsza jest w dalszym ciągu baza MySQL warto sprawdzić możliwości potężnej i darmowej bazy PostgreSQL, czy przechowywanej w jednym płaskim pliku SQLite. Warto być otwartym na nowe rozwiązania gdyż z trendami jest tak że lubią się zmieniać.

W zależności od systemu operacyjnego na jakim pracujesz instalacja środowiska przebiega w różnych krokach. Aby zacząć przygodę z programowaniem, na Linuksie na początek wystarczą proste komendy instalacji wybranych pakietów specyficzne dla danej dystrybucji. Może to być np.:

# dla Debiana, Ubuntu, Mint
sudo apt-get update
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install phpmyadmin
sudo apt-get install mysql-server
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql
sudo /etc/init.d/apache2 restart

Dla Windows istnieją gotowe instalatory. Może to być XAMPP, WAMP czy potężny Zend Server, którego sposób instalacji na Windows znajdziesz w osobnym artykule. W jaki sposób sprawdzić czy nasz serwer działa? Należy podać w przeglądarce adres tak zwanej pętli zwrotnej czyli http://localhost albo http://127.0.0.1. Powinna wyświetlić się podstawowa strona domowa serwera. Mogę zasugerować żebyś, gdy już trochę zrozumiesz sam język, spróbował skonfigurować całość od podstaw na bazie indywidualnych pakietów (dla Windows instalacja sprowadza się do uruchomienia plików .exe dla serwerów, PHP i bazy danych. Należy jednak połączyć wszystkie usługi w całość dodając odpowiednie wpisy zazwyczaj do plików .ini). Bardzo dużo można się dzięki temu nauczyć i dowiedzieć o działaniu usług. Również o wymaganiach i konfiguracji co może nawet pomóc rozwiązać niektóre problemy jakie na pewno pojawią się po takiej automatycznej instalacji.

Edytory

Chociaż nawet drugie Google można napisać w notatniku dla Twojego zdrowia psychicznego jest to niewskazane. W notatniku nie ustawisz prawidłowego kodowania, znaków końców linii, nie mówiąc już o kolorowaniu i podpowiadaniu składni. Istnieje wiele, naprawdę bardzo dobrych i zarazem darmowych edytorów. Do najpopularniejszych zaliczają się:

Edytor, czyli nasze główne środowisko pracy, jest zawsze sprawą mocno indywidualną więc niczego nie narzucam. Pamiętaj tylko aby ustawić kodowanie znaków na UTF-8 – teraz już standard. I nawet nie zaprzątaj sobie głowy ISO-8859-2 czy WIN-1250. Od strony PHP sprawdź czy w pliku php.ini istnieje wpis default_charset = “utf-8” (domyślnie zakomentowany albo ustawiony na inną wartość). Kodowanie można oczywiście zmienić na kilka sposobów ale zwłaszcza początkowo łatwo wpaść w tą pułapkę. Gdyby w późniejszym etapie pojawiły się jednak problemy możesz przeczytać dokładniejszy artykuł.

Rozpoczynamy pracę z PHP

Zakładając że udało się skonfigurować całe środowisko pracy można przystąpić do kwintesencji czyli kodowania. W PHP praca ta jest o tyle przyjemna że nie musimy kompilować kodu. Wystarczy coś napisać, odświeżyć stronę i wyświetli nam się aktualny wynik (w przeciwieństwie do np. Javy). Skrypty PHP mają rozszerzenie .php. Kod można też mieszać z HTML co na początek wystarczy ale na dłuższą metę nie jest dobrą praktyką (mowa o bardziej skomplikowanych aplikacjach webowych). Sprawdźmy czy nasz serwer jest poprawnie skonfigurowany. Utwórz w katalogu danych (public_html, www) plik index.php o treści:

<!doctype html>
<html>
<head></head>
<body>

<?php
  echo '<p>Klasyka kina. Psy, Władysława Pasikowskiego.</p>';
?>

<dialog>
  <dt>Franz</dt> 
  <dd>Pan spyta Ola, on będzie wiedział najlepiej kogo ostatnio zabił.</dd>

  <dt>Senator</dt> 
  <dd>Pan mi nie udziela rad, to pan stoi przed komisją. A nie ja.</dd>

  <dt>Franz</dt> 
  <dd>Czasy się zmieniają, ale pan zawsze jest w komisjach.</dd>

  <dt>Członkini komisji</dt> 
  <dd>Czy jest pan gotów bronić porządku prawnego odnowionej, demokratycznej RP?</dd>

  <dt>Franz</dt> 
  <dd>Bezapelacyjnie, do samego końca. Mojego lub jej.</dd>

</dialog>

</body>
</html>

Jako prawidłowy wynik powinieneś otrzymać cały tekst wyświetlony w przeglądarce. Gdyby pojawiło się okno pobierania pliku wówczas oznacza to błędną konfigurację serwera. Inne możliwe problemy to “Internal Server Error (500)” albo kod PHP wyświetlony w źródle strony. Oznacza to, że skrypty PHP nie są prawidłowo parsowane. Każdy serwer ma też plik domyślny. Zazwyczaj jest to index.php dlatego wchodząc na stronę http://localhost nie musisz podawać pełnej ścieżki http://localhost/index.php. Z konfiguracji może też wynikać kolejność wczytywania innych plików np index.html, default.html, index.php. W takim wypadku jeżeli w katalogu znajdą się pliki index.html oraz index.php pod adresem hosta lokalnego wczyta się zawartość index.html.

Wracając do naszego kodu. Skrypty PHP oznaczone są składnią

<?php
# nasz blok kodu PHP
?>

Kiedy odwiedziłeś adres w przeglądarce serwer wychwycił żądanie i przesłał je do wykonania przez interpreter PHP. Ten z kolei odnalazł funkcję echo wykonał ją i zwrócił wynik do serwera. Ponieważ nie pojawił się żaden błąd, serwer odesłał odpowiedź do klienta. Każda instrukcja kończy się średnikiem, białe znaki nie mają znaczenia o ile nie występują przed kodem PHP. Warto zawsze zapisywać pełną składnię:

<?php
# pełna składnia
?>

# składnia skrócona
<??>

# jeżeli występuje tylko kod PHP wystarczy
<?php
# nasz blok kodu PHP bez zamknięcia ?>

Stosowanie składni skróconej może w pewnych sytuacjach być kłopotliwe i prowadzić do sporych problemów przy błędnym ustawieniu dyrektywy short_open_tag.

Komentarze

Jak w każdym języku, tak też w PHP istnieje możliwość komentowania kodu.

# komentarz jednej linii
// inny komentarz jednej linii

/*
Komentarz dla
wielu linii
*/
?>

Oprócz standardowego opisu przeznaczonego dla programistów albo osób czytających kod niektóre komentarze mają znaczenie wykonawcze. Dla przykładu system ORM Doctrine

/** @Id @GeneratedValue @Column(type="string") */
private $id;

parsuje dodatkowo komentarze aby określić strukturę bazy danych. Innym przykładem twórczego wykorzystania komentarzy jest system phpDocumentor, generujący dokumentację projektu:

/**
 * Decodes the given $encodedValue string which is
 * encoded in the JSON format
 *
 * Uses ext/json's json_decode if available.
 *
 * @param string $encodedValue Encoded in JSON format
 * @param int $objectDecodeType Optional; flag indicating how to decode
 * objects. See {@link Zend_Json_Decoder::decode()} for details.
 * @return mixed
 */

Komentarze takie nie mają żadnego szczególnego znaczenia dla samego języka PHP. Jest to typowy komentarz wykorzystany mądrze przez programistę. Warto jednak zaznaczyć że istnieje taka możliwość.

Zmienne i podstawowe operacje

Zmienne są jednym z najważniejszych elementów każdego języka programowania. Umożliwiają przechowywanie danych, ich modyfikację podczas wykonywania programu, operacje obliczeniowe, porównawcze, matematyczne. Na ich podstawie możliwe jest wykonywanie określonych warunków. Zmienne przechowują różne typy danych: stringi, tablice, liczby całkowite (integer), obiekty, liczby zmienno-przecinkowe (float), boolean. PHP jest językiem dynamicznie typowanym co oznacza że typ danych określany jest automatycznie na podstawie wartości. Nazwę zmiennej poprzedzamy znakiem dolara ($), następnie stosujemy podkreślenie albo literę i opcjonalnie już dalej litery, cyfry, podkreślenia. Czyli przykładowo prawidłowy będzie zapis $test, $_test a błędny $123test. Zastrzeżone jest słowo kluczowe $this. Wielkość liter jest rozróżniana w związku z czym zmienna $test nie jest równa $Test.

<?php
$imie = 'Jan';
$nazwisko = 'Kowalski';
$wiek = 18;

echo "<p>$imie $nazwisko ma obecnie $wiek lat.</p>";

Utworzyliśmy 3 zmienne: $imie, $nazwisko, $wiek, przypisaliśmy im 3 różne wartości a następnie za pomocą funkcji echo wypisaliśmy wynik działania czyli ‘Jan Kowalski ma obecnie 18 lat.’. Jak widać możesz mieszać dowolnie HTML z PHP. W przedstawionym przykładzie inne znaczenie mają użyte cudzysłów i apostrof. Cudzysłów powoduje przetworzenie zmiennych w nim zawartych, apostrof wypisuje zawartość tak, jak została zapisana.

<?php
$imie = 'Jan';
$nazwisko = 'Kowalski';
$wiek = 18;

echo '<p>$imie $nazwisko ma obecnie $wiek lat.</p>';

Tym razem wypisaliśmy cały ciąg bez podstawiania wartości. Ciągi możesz też łączyć za pomocą kropki(.).

<?php
echo '<p>'. $imie .' '. $nazwisko .' ma obecnie'. $wiek .' lat.</p>';

Istnieje też specjalna konstrukcja kropka po czym znak równości (.=) powodująca przypisanie do zmiennej po lewej stronie wartości po prawej stronie.

<?php
$tekst .= 'Jan ';
$tekst .= 'Kowalski ';
$tekst .= 18;
echo $tekst;

Do zmiennych można przypisywać również inne zmienne (operator =).

<?php
$imie = 'Jan';
$nazwisko = 'Kowalski';
$doroslosc = 18;
$wiek = $doroslosc + 20;

echo "<p>$imie $nazwisko ma obecnie $wiek lat.</p>";

Czy nawet zrobić wielokrotne przypisanie:

<?php
$wiek1 = $wiek2 = $wiek3 = 40;

Wszystkie 3 zmienne będą miały wartość 40. Przy okazji pojawił się też operator matematycznej sumy(+). Pozostałe możesz sprawdzić w dokumentacji PHP.

Ciekawa reguła związana jest z dynamicznym typowaniem. Przyjrzyjmy się poniższym zmiennym:

<?php
echo $ogrod = 100 + '15 jabłek';

Dodajemy do siebie integer i string. String ’15 jabłek’ zostanie w tym przypadku przekształcony na integer w związku z czym zsumujemy wartości dwóch liczb całkowitych. Brzmi skomplikowanie ale w gruncie rzeczy jest dość proste i dbając o kod nigdy nie pojawi się problem typu “co w zasadzie otrzymamy po konwersji?”. Kiedy nabierzesz już trochę wprawy w kodowaniu w pewnych sytuacjach będziesz pewnie wykonywał jawne rzutowanie.

<?php
$test = 12.23;

$x[0] = (int) $test;
$x[1] = (float) $test;
$x['dwa'] = (string) $test;

echo $x['dwa'];
echo gettype($x['dwa']);

Wykonaliśmy rzutowanie zmiennej $test na integer, float i string. Funkcja gettype() zwraca nam aktualny typ zmiennej. Przy okazji pojawiła się nowa konstrukcja $x[]. Umiesz sprawdzić jakiego jest typu? Wykonaj polecenie:

<?php
echo gettype($x);

Zmienna $x jest typu tablicowego. Tablice w PHP są traktowane bardzo luźno i mogą być mieszane dowolnie. Część może posiadać indeksy numeryczne (w przykładzie $x[ 0 ], $x[ 1 ]), część identyfikatory znakowe (tablice asocjacyjne – $x[‘dwa’]). Nie wszystkie języki na to pozwalają (bez choćby wcześniejszej definicji zakresu) dlatego pisanie w PHP jest tak przyjemne. Tablice mogą być też wielowymiarowe.

<?php
$x[0][1][3] = 2;
$x[0][2][5] = 2;

Wartości do tablic można przypisywać nie stosując żadnych indeksów:

<?php
$x[] = 1;
$x[] = 2;
echo $x[0];

Tablica taka zyska automatycznie numerowane indeksy rozpoczynające się od 0.

Po przeczytaniu części pierwszej artykułu powinieneś znać podstawową konfigurację serwera, rozumieć ideę programowania w języku PHP, typy zmiennych oraz operacje matematyczne. W części kolejnej poznasz podstawowe struktury kontrolne (pętle, instrukcje if).

Komentarze

  • It’s fun [url=https://arma.itsasoa.org/enlargement/1011/neosize-xl-ebay/]neosize xl[/url] and [url=https://nl.materiel-audiovisuel.net/enlargement/2249/penisizexl-ervaring-beoordelingen-recensie-bestellen/]penisizexl[/url] for people [url=https://bg.anotherplanetlighting.com/slim/3897/sliminazer-apteka-mneniya-tsena-ultima-tsena/]https://bg.anotherplanetlighting.com/slim/3897/sliminazer-apteka-mneniya-tsena-ultima-tsena/[/url] and whether or not [url=https://hu.embl-heidel-berg.de/enlargement-cat-member-xxl/]https://hu.embl-heidel-berg.de/enlargement-cat-member-xxl/[/url]. <br /> I can https://bg.unescoinbici.it/ recoup a few.

Dodaj komentarz

*
Nazwa zostanie wyświetlona wraz z komentarzem. Możesz też utworzyć nowe konto w serwisie, dzięki czemu uzyskasz dodatkową funkcjonalność.
*
Akceptowana jest ograniczona składnia Textile. Wszystkie tagi HTML zostaną usunięte.