PHP PHP: Hypertext Preprocessor mgr inż. Remigiusz Pokrzywiński
Czym jest PHP PHP to obiektowy język programowania wykonywany po stronie serwera. Skrypty zagnieżdżane są zwykle w dokumencie HTML lub XHTML
Co umożliwia PHP współpracę z wieloma popularnymi bazami danych (MySQL), obsługę protokołów sieciowych (SSL, IMAP, SMTP), wsparcie XML, funkcję kryptograficzne, zaawansowany moduł programowania obiektowego, algorytmy kompresji, obsługę przestrzeni nazw i wiele innych.
Osadzanie skryptów PHP Aby plik był rozpoznany przez serwer WWW jako skrypt PHP musi on mieć odpowiednie rozszerzenie..php.php5.php4.php3 Po nadaniu plikowi takiego rozszerzenia serwer będzie wiedział, że plik ten nie jest przeznaczony do bezpośredniego wyświetlenia (jak w przypadku plików HTML), ale że najpierw trzeba go przepuścić przez parser PHP.
Zasada działania strony dynamicznej Zapytanie URL SERWER Klient.html Nasłuchuje Port :80 Żądanie skryptu HTML PHP Dane SQL Odpowiedź w postaci pliku z kodem Baza danych
Osadzanie skryptów PHP cd. Jeśli zwykłemu plikowi HTML nadamy rozszerzenie.php, to zostanie on prawidłowo wyświetlony, mimo że nie jest to skrypt PHP. Dzieje się tak dlatego, że parser PHP przetwarzając stronę ma 2 tryby pracy: -HTML, gdzie cała treść jest wyświetlana, bez przetwarzania, - PHP, gdzie treść jest traktowana jako skrypt do przetworzenia. Do określenia w pliku co jest kodem HTML a co PHP służą specjalne znaczniki.
Osadzanie skryptów PHP cd. Początkowo parser jest w trybie HTML. Aby przejść do trybu PHP można użyć jednego z czterech znaczników:
Zaczynamy od
Oddzielanie instrukcji Jak już można zauważyć w poprzednich przykładach, jedną z głównych zasad języka PHP (jak i wielu innych) jest umieszczenie na końcu każdej instrukcji (niekoniecznie linii) znaku średnika ( ; ). Można go pominąć tylko jeśli w danym miejscu następuje przejście do trybu HTML, a więc po danej linii następuje symbol przejścia do trybu HTML.
Komentarze Czasem zachodzi potrzeba oznaczenia czegoś w kodzie, dla kogoś innego czy nawet dla siebie samego. Można wtedy skorzystać z jednej z kilku metod oznaczania, dzięki którym parser PHP będzie wiedział, że dany tekst nie jest częścią skryptu i można go zignorować. Komentarze przydają się także do tymczasowego wyłączania niektórych linii kodu.
Zmienne Zmienna - identyfikator znakowy, któremu przypisano jakąś wartość. W języku PHP zmienne oznacza się za pomocą znaku dolara ( $ ) przed wspomnianym identyfikatorem. Zmienna służy do przechowywania wartości np.: zmienna wynik $wynik = 5; nazwa zmiennej wartość zmiennej
Zmienne cd. Obsługa zmiennych w PHP jest uproszczona do minimum. W dużych językach programowania zmienne trzeba najpierw inicjować (przy czym z góry trzeba określić typ zmiennej), zmienne tekstowe muszą mieć z góry ustalony rozmiar itp. W PHP nie jest to konieczne. Zmienna jest inicjalizowana (to znaczy rezerwowany jest dla niej pewien obszar w pamięci) przy pierwszym jej użyciu.
Nazewnictwo zmiennych Reguły: - pierwszy znak musi być literą (dużą lub małą) lub podkreśleniem _ (uderscore) - dalej mogą się składać z dowolnej ilości liter, cyfr i znaków o kodzie ASCII powyżej 127 - nie mogą być zarezerwowanym słowem kluczowym $this Przykłady poprawnych: $abc $Moja_Zmienna_5 $ test $JeStWeSoła Przykłady błędnych: $5test $moja zmienna $this
Nazewnictwo zmiennych cd. Wielkość liter ma znaczenie: $mojazmienna to nie to samo co $Mojazmienna
Typy danych liczby całkowite (integer); np.: 4 liczby rzeczywiste (double) np.: 4.6 ciągi znaków (String); np.: Zwykły tekst $hello = "Hello"; echo (hello. " ".world. "!"); wartości logiczne (Boolean); true; false; obiekty (Object); typy złożone tablice (Array); dwa typy wartości specjalne: Null i identyfikator zasobów
Formaty liczbowe
Rzutowanie typów Dozwolone typy rzutowań (int), (integer) rzutuj do typu całkowitego (real), (double), (float) rzutuj do typu rzeczywistego (string) rzutuj do ciągu (array) rzutuj do tablicy (object) rzutuj do obiektu
Rzutowanie typów cd. Drugim sposobem, trwałym, jest użycie funkcji settype. Funkcja ta pobiera 2 argumenty. Pierwszym jest nazwa zmiennej do ustalenia typu, a drugim ciąg kreślający nowy typ zmiennej. Dopuszczalne argumenty funkcji settype: integer double string array object
Predefiniowane zmienne W każdym skrypcie PHP dostępne jest kilka zmiennych, których wartość jest ustalana na podstawie zmiennych środowiskowych serwera WWW. Dostępne są jak zwykłe zmienne ze znakiem dolara przed nazwą. $SERVER_PORT Port na serwerze którego użyto do połączenia. Dla normalnych połączeń będzie to 80. $GATEWAY_INTERFACE Informacja o specyfikacji CGI używanej przez serwer, np. CGI/1.1. $SERVER_NAME Nazwa hosta serwera na którym skrypt jest uruchamiany. Jeśli skrypt pracuje na wirtualnym hoście, to zmienna przyjmie jako wartość nazwę wirtualnego hosta. $SERVER_SOFTWARE Ciąg identyfikujący serwera podawany przy odpowiadaniu na zapytania.
Stałe W PHP występują także tzw. stałe, czyli identyfikatory znakowe, których wartości nie można zmienić. Stałych, w odróżnieniu od zmiennych, używa się bez znaku dolara na początku. Definiowanie stałych
Operatory arytmetyczne
Operator przypisania Podstawowym operatorem przypisania jest symbol =. Oczywiście nie oznacza on jest równe. Wyrażenie $b = 5 oznacza, że zmienna $b przyjmuje wartość równą 5. Zmiennej można przypisać także wartość innej zmiennej: $b = 5; $a = $b; zmienna $a przyjmie wartość 5.
Operatory porównania Operatory porównania są niezbędne do korzystania z instrukcji warunkowych (jeśli coś to zrób coś). Zwracają one wartość TRUE (prawda 1) lub FALSE (fałsz 0).
Operatory inkrementacji i dekrementacji Operatory te występują w większości języków programowania. Służą one do zmniejszenia lub zwiększenia wartości danej zmiennej o 1. Każdy operator można stosować na 2 sposoby: - preinkrementacja/predekrementacja najpierw wartość zmiennej zostanie zmieniona, a później zwrócona, - postinkrementacji/postdekrementacji najpierw zostanie zwrócona wartość zmiennej, a następnie wartość zmiennej zostanie zmieniona.
Operatory logiczne Operatory logiczne służą do budowania bardziej skomplikowanych instrukcji warunkowych do łączenia kilku warunków w jednej instrukcji.
Operator ciągu Operator ciągu. kropka służy do łączenia kilku ciągów w jedną całość.
Operator kontroli błędów Operator kontroli błędów ( @ ) powoduje, że wyrażenie przed którym postawiono ten znak nie spowoduje wyświetlenia się jakiegokolwiek błędu lub ostrzeżenia.
Operatory operacji bitowych Operatory operacji bitowych pozwalają na przestawianie pojedynczych bitów zmiennych.
Instrukcje warunkowe cd. Instrukcje warunkowe są podstawą każdego języka programowania. Używa się jej do wykonania pewnej instrukcji (lub bloku instrukcji), ale tylko w pewnych okolicznościach zostanie spełniony określony warunek (lub cały zestaw warunków). Wyrażeniem warunkowym jest w zasadzie dowolne wyrażenie, ponieważ za warunek uznawane jest wszystko co zwraca wartość, czyli wszystkie zmienne, wyrażenia logiczne, funkcje itp. Za spełniony warunek uznawana jest wartość większa od zera.
Instrukcje warunkowe cd. Jeśli chcemy, aby po sprawdzeniu warunku wykonane zostało nie jedno, ale kilka poleceń, to te polecenia trzeba ująć w nawiasy klamrowe. Bez tego warunkiem objęta by była tylko jedna instrukcja po instrukcji if.
Grupowanie warunków cd.
Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej używanych składni w większości języków programowania, czyli pętla FOR. Ogólny zapis wygląda tak: Jak widać, w tej pętli podaje się 3 wyrażenia jako parametry: inicjalizację zmiennych, czyli ustawienie początkowych wartości dla zmiennych kontrolujących pętlę, sprawdzenie warunku, czyli wyrażenie logiczne kontrolujące pętlę pętla będzie wykonywana dopóki ten warunek jest prawdziwy, oraz modyfikację zmiennych kontrolujących pętlę bez tego pętla będzie wykonywała się w nieskończoność (oczywiście wartość tych zmiennych można modyfikować wewnątrz pętli, ale jest to niezalecane).
Przykład pętli FOR Przykład najprostszej pętli, która wypisze cyfry od 1 do 10:
Pętla while Innym rodzajem pętli jest pętla WHILE. Jest ona wykorzystywana w sytuacjach, kiedy niezbędne jest wykonywanie jakiejś operacji dopóki nie zostanie spełniony warunek.
Pętla do while Odmianą pętli while jest pętla do while. Od zwykłej pętli while różni się ona tym, że polecenia zawarte w pętli będą przynajmniej raz wykonane w przypadku pętli while tak być nie musi, to znaczy jeśli za pierwszym razem warunek nie zostanie spełniony to polecenia z pętli nigdy nie zostaną wykonane. W przypadku tej pętli zostano one wykonane przynajmniej ten pierwszy raz.
Przerywanie wykonań iteracji Czasem zachodzi potrzeba przerwania danej iteracji (powtórzenia) pętli i przejścia do następnej iteracji. Z pomocą wtedy przychodzi instrukcja continue. Wystarczy wstawić ją w odpowiednie miejsce wewnątrz pętli.
Przerywanie wykonań pętli Istnieje też polecenie, które powoduje całkowite wyjście z pętli nie tylko z bieżącej iteracji. To polecenie to brake. Załóżmy, że zmienna $nazwa to zmienna podana z formularza:
Składnia switch Składnia switch jest instrukcją warunkową, ale jedną zmienną można porównać nie z jedną wartością, ale z kilkoma. Niestety nie można konstruować złożonych warunków możliwe jest tylko proste porównywanie.
Składnia switch cd. Instrukcje zawarte po identyfikatorze default wykonywane są jeśli zmienna $zmienna nie przyjęła wartości wartość1 i wartość2 (dla tego przykładu). Aby móc dobrze wykorzystać tą składnię warto jest dokładnie wiedzieć jak ona działa. Instrukcje są przetwarzane linia po linii. Parser przechodzi do pierwszej linii case pasującej do zmiennej. Następnie przetwarzane są wszystkie linie wewnątrz nawiasów klamrowych aż do napotkania instrukcji break nawet jeśli po drodze znajdują się instrukcje case.
Tablice Tablice są bardzo specyficznym typem zmiennych są to, najprościej mówiąc, zmienne zawierające w sobie uporządkowany zbiór zmiennych. Do zmiennych tych uzyskuje się dostęp przez liczbę w nawiasie kwadratowym podane bezpośrednio po nazwie zmiennej tablicy. Liczba ta to tak zwany indeks numer kolejny zmiennej w tablicy. Tak samo przypisuje się wartość do tablicy.
Tablica asocjacyjna W PHP występuje też inny rodzaj tablic, tak zwane tablice asocjacyjne (zwane też czasem haszami hash table). Są to tablice, w których zamiast indeksów liczbowych używa się identyfikatorów znakowych (kluczy):
Przeglądanie tablic Bardzo często zachodzi potrzeba wykonania jakiejś operacji na wszystkich elementach tablicy. Sprawa jest prosta jeśli tablica jest zwykłą tablicą z indeksami liczbowymi i znamy ilość tych elementów:
Przeglądanie tablic cd. Sprawa się trochę komplikuje jeśli nie znamy ilości elementów tablicy. Wtedy z pomocą przychodzi funkcja count( $nazwa_tablicy ). Zwraca ona ilość elementów w tablicy podanej jako parametr.
Funkcje Funkcja jest kawałkiem kodu, który można wywołać podając jej nazwę. Jak można zauważyć, funkcje rozpoznaje się po nawiasach występujących po ich nazwie. W nawiasach tych (jeśli funkcja tego wymaga) podaje się parametry dla danej funkcji. Niektóre funkcje zwracają jakąś wartość, a więc wywołanie takiej funkcji można wstawić jak dowolne inne wyrażenie do listy parametrów innej funkcji czy np. do obliczenia. Programista może też tworzyć własne funkcje.
Przekazywanie zmiennych między stronami Jeśli użytkownik musi podać jakieś dane (np. w celu dodania ich do bazy danych), to jedyną metodą jest pobranie ich ze standardowego formularza HTML. Są dwie metody przekazywania parametrów do innych stron: metoda GET i metoda POST. Metody GET używa się kiedy parametrów jest niewiele. Dzieje się tak ponieważ parametry przekazuje się za pomocą adresu URL (np. http://www.coś.pl/strona.php?parametr1=wartość1¶metr2=wartość2), którego długość jest ograniczona. Należy też pamiętać że parametry są widoczne w pasku adresu przeglądarki, więc tej metody nie należy używać jeśli przekazywane są np. hasła. Adres od parametrów oddzielany jest za pomocą znaku zapytania, a kolejne pary parametr=wartość za pomocą znaku ampersand ( & ). Tą metodę można wykorzystać także przy przekazywaniu parametrów przez odnośnik.
Przekazywanie zmiennych między stronami cd. Zależnie od metody, zmienne trafiają do odpowiednich tablic asocjacyjnych. Dane przesłane metodą GET trafiają do tablicy $_GET (lub $HTTP_GET_VARS w wersjach starszych niż 4.1.0) a dane z metody POST to tablicy $_POST (lub $HTTP_POST_VARS). Tablice $_GET i $_POST są superglobalne. Oznacza to, że są widoczne w każdym miejscu kodu PHP bez konieczności użycia składni globals.
Mechanizm sesji Mechanizm sesji umożliwia on przekazywanie parametrów między stronami w łatwy sposób. Zmienne są przechowywane po stronie serwera a u klienta trzymane jest tylko ID sesji. Te ID jest zapisane w cookie lub przekazywane przez URL. PHP jest w stanie sam rozpoznać czy na komputerze klienta włączony jest mechanizm cookies i w razie potrzeby dodać identyfikator sesji do każdego URLu i formularza.
Operacje na ciągach znaków - konkatenacja Operator ciągu (. kropka) służy do łączenia kilku ciągów w jedną całość. Jak widać na powyższym przykładzie, ciąg znaków umieszczony w apostrofach jest interpretowany jako tekst. Natomiast elementy kodu PHP zawarte w cudzysłowach będą interpretowane jak zwykły kod.
Operacje na ciągach znaków - funkcje strstr() - służy do sprawdzania, czy podany ciąg jest fragmentem innego ciągu stristr() - to samo co strstr ignorując wielkość znaków strcmp() porównuje ciągi znaków strcasecmp() porównuje ciągi znaków ignorując wielkość znaków substr() zwraca część ciągu str_split() zamienia ciąg znaków na tablice znaków str_replace() podmienia fragment ciągu
Operacje na plikach PHP daje nam możliwość tworzenia plików w dostępnych katalogach. Mogą być to pliki o dowolnym rozszerzeniu, które sami nadajemy. Należy uważać, by nie stworzyć pliku o nazwie, która już istnieje istniejący plik zostanie wtedy trwale usunięty w miejsce nowo stworzonego.
Tryby otwarcia plików
Klasy i obiekty Klasa jest teoretycznym projektem (wzorcem, szablonem), fizyczny egzemplarz klasy nazywamy obiektem. Definiowanie klasy(szblonu) Osoba
Klasy i obiekty cd. Utworzenie egzemplarza obiektu typu Osoba. Referencja (odniesienie) $nastolatek umożliwia odwoływanie się do utworzonego egzemplarza obiektu.
Połączenie z bazą danych