Języki, które już znacie Wykład9PodstawyPHP,str1 język polski język angielski język C język preprocesora C język bash-a język HTML kolejny język: PHP Język PHP Wykład9PodstawyPHP,str2 Personal Home Page PHP: Hypertext Preprocessor (takjakgnu=gnu snotunix) Twórcy: Rasmus Lerdorf Zeev Suraski Andi Gutmans od1994r jest wyspecjalizowany do tworzenia dynamicznych witryn internetowych działa po stronie serwera łatwołączysięzobsługąbazdanych ma wiele ciekawych rozwiązań
Witryny statyczne Wykład9PodstawyPHP,str3 HTML: z góry przygotowana treść WITAJ! Witryny dynamiczne Wykład9PodstawyPHP,str4 PHP: treść zależna od interakcji z użytkownikiem Imię? Stefan WITAJ Stefan!
Obliczenie po stronie serwera KLIENT http:// adres URL z zakodowanymi danymi KLIENT strona HTML wygenerowana (obliczona) przez serwer Wykład9PodstawyPHP,str5 SERWER generowanie witryny SERWER Obliczenie po stronie serwera Wykład9PodstawyPHP,str6 Programując w C, przygotowujemy program na ten sam komputer, na którym będzie go wykonywał użytkownik Programując w PHP, przygotowujemy program na serwer, a użytkownik będzie wykonywał go z komputera-klienta Przeglądarka internetowa w komputerze klienta dostaje od serwera gotowe strony HTML; przeglądarka nie widzi, że zostały wygenerowane programem w PHP Program w PHP jest prywatną sprawą serwera Dlatego do zobaczenia strony, napisanej w PHP, wystarczy przeglądarka internetu, potrafiąca wyświetlać strony w HTML Istnieją inne rozwiązania, w których serwer przysyła klientowi programikdowykonania,tzwapletwczystymphptaksięniedzieje: program, wpływający na treść i wygląd strony, wykonuje wyłącznie serwer
Powitanie Wykład9PodstawyPHP,str7 Plik 09-witaj pytaniehtml: <!doctype html> <html> Po kliknięciu na <head> <title>powitanie</title> </head> <body> <form action="09-witaj wlasciwephp"> <b>imie? </b> <input type="text" name="osoba"> <input type="submit" value="wysylam"> </form> </body> </html> przeglądarka sięga po stronę o adresie http:///09-witaj wlasciwephp?osoba=stefan Powitanie Wykład9PodstawyPHP,str8 Po kliknięciu na przeglądarka sięga po stronę o adresie http:///09-witaj wlasciwephp?osoba=stefan Strona o takim adresie nie istnieje Zostaje wywołana strona o adresie http:///09-witajwlasciwephp i serwer dostaje parametr osoba=stefan wzmiennej $REQUEST["osoba"]
Powitanie Wykład9PodstawyPHP,str9 Plik 09-witaj wlasciwephp: <!doctype html> <html> <head> <title>powitanie</title> </head> <body> WITAJ <span style="color:red"><b> <?php print($ REQUEST["osoba"]);?> </b></span>! </body> </html> WstawkiPHPwplikuHTML Wykład 9 Podstawy PHP, str 10 MiejscenakodwPHP:wstawkawwitrynieHTMLujętawnawiasy <?php?> KomendadrukowaniawPHPprint()oznaczadrukowaniedowitryny umieszczenie wydruku wewnątrz witryny HTML Np fragment WITAJ <?php print($ REQUEST["osoba"]);?>! wyświetla WITAJ Stefan! o ile wartością zmiennej $ REQUEST["osoba"] jest Stefan
WstawkiPHPwplikuHTML Wykład 9 Podstawy PHP, str 11 Żeby zrozumieć, jak działa PHP, trzeba wiedzieć, jak działa wygenerowany przez niego kod HTML Przykład: M PHP HTML wyświetla <?php print("aa"); print("bb");?> <?php print("aa\n"); print("bb");?> <?php print("aa<br>"); print("bb");?> aabb aa bb aa<br>bb aabb aabb aa bb Podstawowe cegiełki PHP Wykład 9 Podstawy PHP, str 12 Zmienne identyfikatory poprzedzone znakiem dolara, np $imie ="Pafnucy"; Uwaga: w odróżnieniu od języka bash-a zawsze poprzedzone znakiem dolara; zmiennych się nie deklaruje deklarują się same w miejscu pierwszego wystąpienia; funkcja isset sprawdza, czy zmiennej została nadana wartość; np if(isset($x)) print($x); else print("nieokreslone"); drukuje wartość $x lub informację o nieokreśloności; zmienne nie mają ustalonego typu; można pod nie podstawiać liczby całkowite, liczby rzeczywiste i napisy
Podstawowe cegiełki PHP Wykład 9 Podstawy PHP, str 13 Zmienne tablicowe Tablicajestciągiemparklucz wartość kluczami mogą być napisy i liczby całkowite; wartości mogą być dowolne; nie ma wymagania, żeby wszystkie wartości w tablicy były tego samego typu Przykład: M$dziwna = array( -3 => 314, "abc" => 1, "def" => array(0=>2,"xyz"=>1), 1 => "jkl" ); $dziwna[-3] = 314 $dziwna["def"]["xyz"] =1 $dziwna["abc"]= array(3=>5); $dziwna["abc"][3]=5 Podstawowe cegiełki PHP Wykład 9 Podstawy PHP, str 14 Komendy przypisanie $x = $x*10+$c; jak w C if($a>$b) $m=$a; instr warunkowa else $m=$b; jakwc instr warunkowa if($tab[$i]>$max) uproszczona $max=$tab[$i]; jakwc pętla while while($i<$n) $i++; jakwc iteracja for for($i=0; $i<$n; $i++) { $sum += $a[$i]; $prod*= $a[$i]; jakwc
Podstawowe cegiełki PHP Wykład 9 Podstawy PHP, str 15 Komendy przełącznik switch($slowo) { case"horse": print("koń<br>\n"); break; case"donkey": print("osioł<br>\n"); break; case"pig": print("świnia<br>\n"); break; default: print("nieznane<br>\n"); break; jakwc Podstawowe cegiełki PHP Wykład 9 Podstawy PHP, str 16 Komendy iteracja po tablicy foreach($tab as $klucz => $wart) print($klucz"=>"$wart"<br>\n"); nowość! przebiega wszystkie pary klucz wartość, składające się na tablicę $tab; za każdym obrotem w ciele mamy dostęp do kolejnego klucza $klucz i odpowiadającej mu wartości $wart PROGRAM: for($i=0; $i<6; $i++) $tab[$i] = 5-$i; foreach($tab as $i=>$w) { print("dlaindeksu"$i); print("wartosc"100*$w); print("<br>\n"); WYDRUK: dla indeksu 0 wartosc 500 dla indeksu 1 wartosc 400 dla indeksu 2 wartosc 300 dla indeksu 3 wartosc 200 dla indeksu 4 wartosc 100 dlaindeksu5wartosc0
Funkcje Wykład 9 Podstawy PHP, str 17 PodobnedoC,ale deklaracja zaczyna się od słowa kluczowego function, a na liście parametrów nie ma typów: PROGRAM: function kwadrat($arg) { return $arg*$arg; print(kwadrat(10)"<br>\n"); WYDRUK: 100 Funkcje Wykład 9 Podstawy PHP, str 18 PodobnedoC,ale tablice mogą być wartościami funkcji: PROGRAM: function dwarazy() { for($i=0; $i<6; $i++) $tab[$i] = 2*$i; return $tab; print("2*1=="dwarazy()[1]"<br>\n"); print("2*5=="dwarazy()[5]"<br>\n"); print("2*9=="dwarazy()[9]"<br>\n"); WYDRUK: 2*1==2 2*5==10 2*9==
Funkcje Wykład 9 Podstawy PHP, str 19 PodobnedoC,ale zmienne, które pojawiły się wewnątrz ciała funkcji, są niewidoczne na zewnątrz tegociała(jakwc); zmienne, które pojawiły się na zewnątrz ciała funkcji, są niewidoczne wewnątrz tegociała(inaczejniżwc) $x=1; $x functionqq1() { $y=2; functionqq2() { $x=3;$y=4; $z=$x+$y; $x $y $y $y $z Funkcje Wykład 9 Podstawy PHP, str 20 Zakresy zmiennych można zmodyfikować: deklaracja global: PROGRAM: $x=1; functionqq() { global$x;$x=2; qq();print($x); WYDRUK: 2
Napisy Wykład 9 Podstawy PHP, str 21 Operacje na napisach WPHPnapisniejesttablicąznaków! Konkatenacja: "kot""i""pies" == "kotipies" Rozbicie na kawałki: explode("","kotipies") == array(0=>"kot",1=>"i",2=>"pies") bardzowieleinnychfunkcjinanapisach Napisy Wykład 9 Podstawy PHP, str 22 PROGRAM: $a=explode("", "Dziecku w kolebce ktos" " leb urwal chytrze" ); $napis=""; foreach($a as $ind=>$wart) { print($wart"<br>\n"); $napis= $wart; Dziecku w kolebce ktos leb urwal chytrze WYDRUK: print("<br>\n"$napis); Dzieckuwkolebcektosleburwalchytrze