PHP #1

Czym s▒ skrypty PHP?
Skrypty PHP s▒ to programy umieszczane w tre╢ci stron WWW. S▒ one wykonywane przez serwer przed wys│aniem strony do u┐ytkownika. Maj▒ bardzo du┐e moliwo╢ci, ale mimo to s▒ do╢µ proste. Bardzo │atwa jest obs│uga formularzy za pomoc▒ skrypt≤w PHP. Jedn▒ z najwiΩkszych zalet skrypt≤w PHP jest bardzo │atwa integracja z wieloma bazami danych. Ten kurs opisuje jedynie wykorzystanie bazy Postgres SQL, ale obs│uga innych baz jest podobna. Opr≤cz tego skrypty PHP maj▒ wiele innych ciekawych mo┐liwo╢ci, jak dynamiczne tworzenie obrazk≤w w formacie GIF, i mo┐liwo╢µ │atwego wysy│ania plik≤w na serwer. DziΩki temu skrypty PHP stanowi▒ ciekaw▒ alternatywΩ dla skrypt≤w CGI pisanych w Perlu, czy innych jΩzykach.

Jak umie╢ciµ skrypt na stronie
Skrypt PHP mo┐na umie╢ciµ w pliku HTML o rozszerzeniu ustalonym przez administratora serwera. Zwykle s▒ to pliki *.php3 dla wersji 3.0 i *.phtml dla wersji wcze╢niejszych. Fragment dokumentu kt≤ry ma zastaµ zinterpretowany jako skrypt mo┐na zaznaczyµ na 4 sposoby:

1. <? (tre╢µ skryptu) ?>
2. <?php (tre╢µ skryptu) ?>
3. <script language="php"> (tre╢µ skryptu) </script>
4. <% (tre╢µ skryptu) %> (od wersji 3.0.4)

Wyb≤r u┐ytego sposobu mo┐e zale┐eµ od innych rozszerze± jΩzyka HTML, ewentualnie od ogranicze± zastosowanego do tworzenia strony edytora (w tym wypadku zwykle u┐ywa siΩ sposobu 3).


Najprostszy skrypt
Na pocz▒tku jedna uwaga: znaczniki <? i ?> mo┐na zast▒piµ dowolnymi wymienionymi wy┐ej. W nastΩpnych przyk│adach bΩde je pomija│, podaj▒c jedynie tre╢µ skryptu.

 <? echo("To jest prosty skrypt PHP"); ?>

W miejscu gdzie zostanie wstawiony ten skrypt powinien pojawiµ siΩ napis To jest prosty skrypt PHP. Ten skrypt sk│ada siΩ tylko z jednej instrukcji. Instrukcje w skryptach PHP s▒ ko±czone ╢rednikami. Znacznik ko±ca skryptu tak┐e ko±czy instrukcjΩ, wiΩc ╢rednika na ko±cu tej lini mog│oby nie byµ. Dobrym zwyczajem jest jednak stawianie ╢rednika tak┐e po ostatniej instrukcji. Pomaga to w unikaniu pomy│ek - je┐eli teraz dopisze jakie╢ instrukcje na ko±cu skryptu wszystko bΩdzie w porz▒dku. Gdyby ╢rednika nie by│o, pojawi│by siΩ b│▒d.


Komentarze
Komentarz to wstawiany w skrypcie kawa│ek tekstu kt≤ry jest po prostu ignorowany. Komentarze s▒ przydatne zw│aszcza przy pisaniu d│u┐szych skrypt≤w, w kt≤rych nie widaµ na pierwszy rzut oka co kt≤ry fragment robi. Komentarze w skryptach PHP s▒ oznaczane tak jak w jΩzyku C - znakami /* i */, np:

echo("Kawa│ek<BR>tekstu") 
/* Poprzednia linia wy╢wietla w 2 liniach napis 
 "kawa│ek tekstu".
 Nie jest to zbyt odkrywcze, ale w ko±cu 
 chodzi o przyk│ad zastosowania komentarza ;-) */

Jak widaµ komentarz mo┐e mieµ na kilka lini.


Wykorzystanie zmiennych
W skryptach PHP wykorzystanie zmiennych jest du┐o prostsze ni┐ w wielu innych jΩzykach. Nazwy zmiennych zawsze zaczynaj▒ siΩ od znaku $. Nie jest konieczne deklarowanie zmiennych, tak jak ma to miejsce w wielu innych jΩzykach. Aby stworzyµ zmienn▒ wystarczy nadaµ jej jak▒╢ warto╢µ, np:

 $a=7;
 $b="Jaki╢ tekst";
 $c=2.654;
 $d=0.0

Jeszcze s│owo wyja╢nienia na temat typ≤w zmiennych. PHP obecnie obs│uguje nastΩpuj▒ce typy zmiennych:

  1. integer - liczba ca│kowita

  2. double - liczba rzeczywista

  3. string - tekst

  4. array - tablica

  5. object - z│o┐one zmienne definiowane przez u┐ytkownika

  6. pdfdoc (Tylko przy w│▒czonej obs│udze dokument≤w PDF)

  7. pdfinfo (Tylko przy w│▒czonej obs│udze dokument≤w PDF)

Typ zmiennej jest okre╢lany automatycznie na podstawie przypisywanej warto╢ci. I tak w powy┐szym przyk│adzie $a ma typ integer, $b ma typ string a $c i $d maj▒ typ double (0 jest co prawda liczb▒ ca│kowit▒, zle ka┐da liczba zawieraj▒ca kropkΩ jest traktowana jako rzeczywista).
Jak widaµ na powy┐szym przyk│adzie, tekst powinien byµ zawsze ujΩty w cudzys│owy. Je┐eli chcemy w tek╢cie umie╢ciµ cudzys│≤w, nale┐y poprzedziµ go znakiem \. To samo dotyczy znaku $. W celu umieszczenia wewn▒trz tekstu znaku \ nale┐y napisaµ \\. Aby umie╢ciµ w tek╢cie znaku nowej lini mo┐na u┐yµ sekwencji \n. Wewn▒trz tekstu mo┐na te┐ u┐yµ zdefiniowanych wcze╢niej zmiennych:

 $a=3;
 $b="Jaka╢ warto╢µ";
 $c="$a, $b";

Zmienna $c bΩdzie mia│a warto╢µ "3, Jaka╢ warto╢µ".

Tablice
Tablica to wiele zmiennych u│o┐onych kolejno, do kt≤rych mo┐na dostaµ siΩ za pomoc▒ indeksu. Tak samo jak w przypadku zwyk│ych zmiennych, aby stworzyµ tablicΩ wystarczy przypisaµ warto╢µ kt≤remu╢ z jej p≤l:

 $tablica[0]="warto╢µ pola 0";
 $tablica[1]="warto╢µ pola 1";
 $tablica[2]="warto╢µ pola 2";
 $tablica[3]="warto╢µ pola 3";
 $tablica[4]="warto╢µ pola 4";

Jako indeksu mo┐na u┐yµ innej zmiennej, np.

 $indeks=3;
 $tablica[$indeks]=27;




Operatory i wyra┐enia
Poprzedni przyk│ad ogranicza│ siΩ tylko do przypisania kilku zmiennym warto╢ci. Oczywi╢cie mo┐na na nich wykonywaµ dzia│ania:

 $a=5;
 $b=$a+2; /* $b ma warto╢µ 7 */
 $b=$b+3; /* teraz $b ma warto╢µ 10 */
 $b+=3; /* to ma efekt taki sam jak $b=$b+3, z tym ┐e 
jest wyra╝niejsze w zapisiei szybciej dzia│a */
 $c=2*$a+3*($b-$a); /* tego ju┐ chyba nie musze wyja╢niaµ */

W jednej lini mo┐na umie╢ciµ kilka przypisa±, np:

 $a=$b=5;

Przypisania s▒ obliczane od prawej strony (w tym wypadku najpierw zmiennej $b przypisywana jest warto╢µ 5, potem zmiennej $a warto╢µ zmiennej $b).

PHP obs│uguje kilka typ≤w por≤wna±. Por≤wnanie ma warto╢µ 1 je┐eli warunek jest spe│niony, lub 0 gdy nie jest.

  • $a==$b - spe│nione gdy $a i $b s▒ r≤wne. Nale┐y pamiΩtaµ ┐e $a=$b jest operacj▒ przypisanie - zmiennej $a jest przypisywana warto╢µ $b, i ca│e wyra┐enie ma warto╢µ $b.

  • $a>$b - spe│nione gdy $a jest wiΩksze od $b

  • $a>=$b - spe│nione gdy $a jest wiΩksze lub r≤wne $b

  • $a<$b - spe│nione gdy $a jest mniejsze od $b

  • $a<=$b - spe│nione gdy $a jest mniejsze lub r≤wne $b




Tworzenie funkcji
W programach przyk│adowych by│y ju┐ u┐yte funkcje, chocia┐ nie by│o o tym mowy. Konkretnie by│a u┐yta funkcja echo. Jest to przyk│ad funkcji zdefiniowanej przez tw≤rc≤w jΩzyka PHP. Ale mo┐na te┐ stworzyµ w│asn▒ funkcjΩ. Wygl▒da to tak:

 Function f($a, $b) 
 {
$a+=$b;
echo($a);
 }

 f(7, 2); /* teraz wykonaj▒ siΩ komendy 
 zawarte w tre╢ci funkcji. Zmienna 
 $a bΩdzie mia│a warto╢µ 7, $b 2 */

Jak widaµ deklaracja funkcji zaczyna siΩ od s│owa Function. NastΩpnie podaje siΩ nazwΩ funkcji i w nawiasie listΩ parametr≤w oddzielonych przecinkami. Potem w nawiasach klamrowych nale┐y podaµ tre╢µ funkcji. W celu wywo│ania funkcji podaje siΩ jej nazwΩ i w nawiasach listΩ warto╢ci parametr≤w. Je┐eli nie przekazuje siΩ ┐adnych parametr≤w, i tak nale┐y po nazwie funkcji umie╢ciµ pusty nawias.
Funkcji nale┐y u┐ywaµ, gdy dany fragment kodu musi zostaµ wykonany w wielu miejscach. Dobrze jest te┐ d│u┐sze fragmenty skrypt≤w umie╢ciµ w kilku funkcjach w celu zwiΩkszenia przej┐ysto╢ci.



Zmienne w funkcjach
Kiedy zmienna jest zadeklarowana poza funkcj▒, jej warto╢µ nie bΩdzie widoczna w funkcji. Ilustruje to przyk│ad:

 $a=5;

 Function f()
 {
echo($a);
 }

 f();

Wykonanie powy┐szego kodu nie spowoduje, jak mog│oby siΩ wydawaµ, wy╢wietlenia liczby 5. »eby zmienna globalna (w tym wypacku $a) by│a widoczna wewn▒trz funkcji, nale┐y u┐yµ polecenia global:

 $a=5;

 Function f()
 {
global $a;
echo($a);
 }

 f();

Po wykonaniu powy┐szego kodu w dokumencie pojawi siΩ liczba 5.
Je┐eli stworzymy zmienn▒ wewn▒trz funkcji, jej warto╢µ bΩdzie za ka┐dym wywo│aniem ustawiana od pocz▒tku:

 Function f()
 {
$a=2;
echo($a);
$a++;
 }

 f();
 f();

Wykonanie tego kodu spowoduje pojawienie siΩ dwa razy tego samego. Je┐eli chcemy, ┐eby zmienna nie traci│a warto╢ci po zako±czeniu funkcji, nale┐y u┐yµ polecenia static:

 Function f()
 {
static $a=2;
echo($a);
$a++;
 }

 f();
 f();

Teraz w dokumencie pojawi siΩ najpierw liczba 2, potem 3.


Zwracanie warto╢ci
Funkcja mo┐e zwr≤ciµ warto╢µ. u┐ywa siΩ do tego polecenia return:

 Function f($p)
 {
return 3*$p;
 }

 $a=f(7); 
 echo($a); /* $a ma warto╢µ 21 */
 /* mo┐na te┐ od razu echo(f(7)); */

Ten skrypt wy╢wietli liczbΩ 21.
Po zwr≤ceniu warto╢ci ko±czy siΩ wykonanie funkcji:

 Function f()
 {
return 3;
echo("Ten tekst siΩ nie wy╢wietli");
 }

Po wykonaniu polecenia return ko±czy siΩ dzia│anie funkcji i funkcja echo nie jest wywo│ywana.


Grzegorz 'Ygreg' Plebanski
ygreg@and.pl
http://ygreg.and.pl

 

 Copyright © 2000 PTiK. Wszystkie prawa zastrze┐one.
 Kopiowanie tekst≤w w ca│o╢ci lub we fragmentach bez zgody redakcji i autor≤w zabronione.