UMIESZCZANIE SKRYPTÓW W KODZIE HTML
Skrypty PHP są najczęściej wykonywane przez serwer WWW.
Do wyodrębnienia kodu skryptu od innych elementów (np.
koduHTML) niezbędne jest umieszczenie go wewnątrz znacz
ników. Parser (analizator składniowy) PHP będzie przetwa
rzał jedynie ten fragment kodu,który znajdzie się pomiędzy
znacznikiem otwierającym i zamykającym. Do dyspozycji są
cztery typy znaczników:
• znaczniki kanoniczne,
• znaczniki typu SGML(skrócone),
• znaczniki typu ASP,
• znacznikiskryptówHTML.
?:nac�niki �noniczn�
Znaczniki kanoniczne to standardowe i najczęściej spotykane
znaczniki PHP w postaci:Są one rozpoznawane zawsze,niezależnieod tego,jakie opcje
włączy się w pliku konfiguracyjnym. Zaleca się stosowanie
wyłącznie takich znaczników.
Znaczniki typu SGML mają następującą postać:
/ / kod skryptu
? >Jest to najkrótsza forma znaczników bloku PHP,jaką można
zastosować. By skorzystać z tego sposobuzagnieżdżania kodu
PHP, należy w pliku konfiguracyjnym php.ini umieścić linię
short open tag = On lub włączyć opcję enable
short=tagspodczas kompilacji pakietu. Nie należy ichsto
sowaćwprzypadkuzagnieżdżaniakoduPHP wplikachXHTML.
Znaczniki typu ASP
Znaczniki tego typu wywodzą się z techniki ASP. Mają one
postać:<%
// kod skryptu
�>KOMENTARZE
W kodzie PHP można zastosować trzy rodzaje komentarzy,
dwa zapożyczone ze składnijęzyków takich jak C i C++ i jeden
stosowany w powlokach uniksowych:
• komentarz blokowy,
• komentarz jednowierszowy,
• komentarz jednowierszowy uniksowy.
Komentarz blokowy
Ten typ komentarza zaczyna się od sekwencji znaków I*,
a kończy sekwencją *I. Wszystko to,co znajduje się pomię
dzy nimi,zostanie zignorowane przez analizator składniowy
PHP:To j est komentar:: blokowy
*/
Należy pamiętać,że komentarz ten koniecznie musi znaleźć
się w bloku PHP. Nie wolno też dokonywać jego zagnieżdża-
ELEMENTY JĘZYKA
Typy danych
Występujące w PHP typy danych można podzielić na:
• typy proste(skalarne,ang. primitive types, scalar types),
• typy złożone(ang. compound types, camp/ex types),
• typy specjalne(ang. specialtypes).
Typy proste
Typ boołean
Typ logiczny przyjmujący jedną z dwóch wartości: true
(prawda)lub false(fałsz).W przypadkukonwersji innych ty
pów natypboolean obowiązuje zasada,że wartość fal se
powstaje z przekształcenia:
• typu integer o wartości O,
• typu double o wartości o,
• typu łańcuchowego o wartości pustej " " ,
• typu łańcuchowego o wartości "o",
• tablicy ozerowej liczbie elementów,
• typu obiektowego o zerowej liczbie elementów,
• typu specjalnego null,
• obiektu SimpleXML, utworzonego z pustych
znaczników.
W każdym innym przypadku w wyniku konwersji otrzymywa
na jest wartość true.
Typinteger
Typ całkowitoliczbowy(oznaczany jako int),reprezentujący
zarówno dodatnie, jak i ujemne liczby całkowite. Liczby te
mogą być zapisane w trzech różnych formatach: dziesiętnym,
ósemkowym (oktalnym) i szesnastkowym (heksadecymal
nym). Domyślnie stosowany jest format dziesiętny. Aby zapi
sać liczbę ósemkową,należy poprzedzić ją znakiem o(zero),
liczbę szesnastkową należy poprzedzić znakami Ox lub ox:
• literał16 to liczba w systemiedziesiętnymo wartości 16,
• literał02 o toliczbaósemkowaowartości16 dziesiętnie,
• literał ox1o to liczba szesnastkowa o wartości
16 dziesiętnie.
Maksymalny zakres typu całkowitego zależy od platformy
sprzętowo-systemowej, na jakiej uruchamiane jest PHP.
Typowe zakresy wartości:
System Liczba bajtów Min. Maks.
32-bitowy -231 231_1
64-bitowy -263 263_1
Abymóc korzystaćz tego typuwyróżnienia blokówPHP,należy
w pliku konfiguracyjnym włączyć opcję asp tags = on.
Możliwość stosowania znaczników ASP zostaTa wprowadzona
w PHP w wersji 3.0.4. Nie zaleca się wykorzystywania tej opcji.
Znac�niki skryp!óW HTML
Jest to typowy znacznik Postać ta, podobnie jak postać kanoniczna,jest rozpoznawa
na standardowo i nie wymaga włączania dodatkowych opcji
konfiguracyjnych. W przypadku zagnieżdżania skryptów
w kodzie HTML lub XHTML nie należy stosować takich znacz
ników,ponieważ są niezgodne z aktualnymi standardami.
Najprostszy skrypt po prostu wyświetla napis na ekranie.
Aby go napisać,można użyć instrukcji echo (" tekst " ) ;
lub print ( " teks t " I;. Po umieszczeniu jej między
znacznikami PHP i zagnieżdżeniu w kodzie HTML(4.01 strict)
uzyskamy:< ! DOCTYPE HTML PUBLIC " - / /"3C/ /DTD HTML
'-"4. 01//EN"
"h ttp : / / www . 1·13. org/TR/ h tm14 /stri ct . d td" :>
M.oja strona WW'WZarówno w przypadku echo, jak i print można pomi
nąć nawias okrągły, np.: echo "tekst " ; lub print
" tekst " ; .
nia. Bez problemu można natomiast zastosować wewnątrz
komentarza blokowego komentarze jednowierszowe.
K.Q_�en_!ar_� je_Q!I01ivięrs?_ owy
Komentarz tego typu rozpoczyna się od znaków II i obo
wiązuje do końca bieżącego wiersza. Można go umieszczać
jedynie w blokuPHP.Komentarz jednowierszowy uniksowy
Komentarztegotypurozpoczyna się od znaku fr i obowiązuje
do końca bieżącego wiersza. Jego składnia pochodzi z syste
mu Unix. Można go umieszczać jedynie w blokuPHP.Rozmiar typu w danej implementacji może być odczytany
ze stałej PHP INT srzE, natomiast maksymalna dopusz
czalna wartośc -ze stałej PHP INT MAX. W przypadku
przekroczenia zakresu wartość jest konwertowana na typ
double.
Przy konwersji z typów boolean i double na typ i nte
ger obowiązują następujące zasady:
• Konwersja z typuboolean o wartości true daje
w wyniku 1.
• Konwersja ztypuboolean o wartości false daje
w wyniku O.
• Konwersja z typu double powoduje zaokrąglenie
w dół do najbliższej liczby całkowitej.
Uwaga: jeśli wartość typu double przekracza zakres liczb
typu in teger, wartość,jaka powstaje w wyniku konwersji
jest nieokreślona.
W przypadku konwersji z typu string obowiązują nastę
pujące zasady:
• Jeśli ciąg znakówrozpoczyna się od prawidłowejliczby
całkowitej nieprzekraczającej dopuszczalnego zakresu
(np.: "256", "-512" ,"64xyz"),wynikiemjest
wartośćreprezentowana przez ten ciąg.
• Jeśli ciąg znaków rozpoczyna się od prawidłowej liczby
zmiennopozycyjnej(np.: " 1. 2 ", " -2. 4 " ," 3 . 6e2 " ,
" 2 . 8e4xyz") lub przekracza dopuszczalny zakres,
najpierw wykonywana jest konwersja do typu double.
• Jeśli ciąg znaków nie rozpoczyna się odprawidłowej
liczby,wynikiemjest wartość zero.
Konwersja z innych typów niż wymienione nie została zdefi
niowana i takiej konwersji nie należy wykonywać.
Uwaga: konwersja pojedynczego znaku do typu integer
nie daje w rezultacie kodutegoznaku.W celuuzyskania kodu
znaku należy korzystać z funkcji ord i chr.
Typ doubłe
Typ double(oznaczany również jako float) reprezentuje
liczby zmiennopozycyjne (ang. f/oating point). Ich zakres,
podobniejak dla typu integer, zależy od platformy sprzę
towo-systemowej(z reguły maksymalna wartość jest zbliżona
do 1.8e308). Typową reprezentacją jest zapis z kropką dzie
siętną,czyli np. 1 . 5. Można również używać notacji wykład
niczej,w postaci xeY, gdzie x jest liczbą w notacji z kropką
dziesiętną,a Y to żądana potęga liczby 10, np.:
• 1.2el to 12,
• 4e2to400,
• 0.12e3to120.
W przypadku konwersji do typu zmiennoprzecinkowego
ze wszystkich typów,z wyjątkiem łańcuchowego, najpierw
wykonywana jest konwersja do typu i n teger, a następnie
z i n teger do double(przy próbie wykonania konwersji
z typu obiektowego zostanie wygenerowane ostrzeżenie).
Przy konwersji z typu s tring obowiązują następujące
zasady:
• Jeśli ciąg znaków rozpoczyna się od prawidłowej liczby
całkowitej(np.: "2 56", "-512", " 64xyz "),której
wartość nie przekracza dopuszczalnego zakresu dla
typu integer, najpierwjest wykonywana konwersja
do typu integer.
• Jeśli ciąg znaków rozpoczyna sięod prawidłowej liczby
zmiennopozycyjnej(np.: "1.2 " ,"-2. 4", " 3 . 6e2 " ,
"2. 8e4xyz ") bądź też zaczyna się od liczby
całkowitej przekraczającej dopuszczalny zakres dla typu
integer, wynikiem jest wartość reprezentowana
przez ciąg.
• Jeśli ciąg znaków nie rozpoczyna się od prawidłowej
liczby,wynikiem jest wartość O.
Typ string
Typ s tring, to typ łańcuchowy,który służy do zapamięty
wania sekwencji znaków. Nie ma ograniczenia dlugości ciągu.
Pojedynczyznak zapamiętywany jest najednym bajcie,nie ma
więc bezpośredniej obsługi standardu Unicode. Łańcuch zna
ków można utworzyć wjednym z czterechsposobów zapisu:
• wykorzystując znaki apostrofu,
• wykorzystując znaki cudzysłowu,
• wykorzystując składnię heredoc,
• wykorzystując składnię nowdoc(od PHP w wersji 5.3.0).
Znaki apostrofu
Najprostszym sposobem deklaracji łańcucha znakowego jest
ujęcie go w znaki apostrofu. PHP nie dokonuje interpretacji
takiego ciągu, wyświetlany jest on zatem w niezmienionej
postaci:
'Przykładowy łańcuch znakQ\·11
Wyjątkiem jest jedynie sam znak apostrofu. Aby go uzyskać,
należy poprzedzić go znakiem lewego ukośnika(backslash):
' Znak aP.2strofJJ...l:l.ygląda tak : \ ' '
Znaki cudzysłowu
Ciągi znaków ujęte w cudzysłów są przetwarzane przez PHP.
Występujące w nich zmienne są zamieniane na wartości tych
zmiennych. Obowiązują przy tym następujące zasady:
• Jeżelizmiennajest typuznakowego,zawarty w niej ciąg
znakówjest wklejany do ciągu bieżącego.
• Jeżeli zmiennajest innego typu niż znakowy,najpierw
następuje jej konwersja na typ s tring, a następnie
zostajeona wklejona do ciągu bieżącego.
• Jeżeli zmienna nie zawiera żadnej wartości,jest trakto
wana jak pusty ciąg znaków.
W ciągach tego typu można stosować sekwencje znaków
specjalnych:
• \n-nowy wiersz,
• \r - powrót karetki,
• \t - tabulator poziomy,
• \v-tabulator pionowy,
• \f - przewinięcie strony,
• \\ - ukośnik,
• \$ - znak dolara,
• \" - znak cudzysłowu.
Jeśli ukośnikiem zostanie poprzedzona liczba, zostanie ona
potraktowanajako kod znaku w notacjioktalnej(ósemkowej).
Przykładowy ciąg:
"\145\143\150\157"
zostanie potraktowany tak samo,jak napis:
"e..cho"
Jeśli przed liczbą pojawi się sekwencja \x, zostanie ona po
traktowana jako kod znaku w notacji heksadecymalnej(szes
nastkowej). Przykładowy ciąg:
" \x65 \x 63\>:68\x6F"'
zostanie potraktowany tak samo,jak napis:
"echo0
Składnia heredoc
W przypadku składni heredoc łańcuch znakowy rozpoczy
na się od sekwencji « <, po której następuje identyfikator.
Następnie wykorzystuje się ten identyfikator,by zasygnalizo
wać koniec łańcucha znakowego.<<Wybrane funkcje operujące na ciągachznaków
Funkcja addcslashes(dostępna od PHP 4)
Deklaracja: str ing addcslashes (s tring str,
string charlist)
Zwraca ciąg, w którym znaki wymienione w charlist
zostały poprzedzone znakiem backslash (\). Znaki o kodach
mniejszych od 32 i większych od 126 zostaną zamienione na
postać oktalną. Przykładowo: wykonanie addcslashe
s ('abcde ' , ' ab ' ) da w wyniku ciąg \a\bcdefgh.
Funkcja addslashes(dostępna od PHP 3)
Deklaracja: string addsl ashes (string str)
Zwraca ciąg,w którym znaki specjalne(apostrof,cudzysłów,
backslash oraz bajt zerowy NUL) zostaną poprzedzone zna
kiem ukośnika. Funkcja jest najczęściej wykorzystywana do
przetwarzania zapytań do baz danych.
Funkcja bin2hex(dostępna od PHP 3.0.9)
Deklaracja:s tring b in2hex (string str)
Zwraca ciąg, w którym wszystkie znaki w s tr zostały
przedstawione w postaci heksadecymalnej. Przykładowo:
wywołanie bin2hex ( ' abcde ' I da w wyniku ciąg
6162 636465.
Funkcja chr(dostępna odPHP 3)
Deklaracja:string chr (in t ascii )
Zwraca ciąg zawierający znak o kodzie przekazanym w argu-
mencie as ci i.
Funkcja chunk_split(dostępna od PHP 3.0.6)
Deklaracja: string ch unk spl i t (st ring
body [, int chunklen
-
[ , s tring end]] I
Dzieli ciąg body na mniejsze części o długości chunklen
(domyślnie 76 znaków),dodając na końcu każdej linii ciąg
end(domyślnieznaki końca linii \r\n).
Funkcja convert_uudecode(dostępna od PHP 5)
Deklaracja: string convert uudecode (s tring
data)
-
Dekoduje dane zakodowane za pomocą algorytmu uuen- .
code (np. przetworzone przez funkcję convert uuen-
code). Zwraca rozkodowany ciąg znaków.
-
Funkcja convert_uuencode(dostępna od PHP 5)
Deklaracja: string convert uuencode (string
str)
-
Koduje ciąg znaków zapisany w argumencie s t r za pomocą
algorytmu uuencode. Zwraca zakodowany ciąg znaków.
Funkcja count_chars(dostępna od PHP 4)
Deklaracja: mixed count chars I string str [ ,
i n t model I
-
Zlicza wystąpienia każdego bajta w ciągu str i zwraca wynik
obliczeń w postaci wskazanej przez argument made(domyśl
nie mocie ma wartość O):
• O-tablica,w której kluczami są bajty,a wartościami
kluczy liczba wystąpień danego bajta w ciągu;
• 1-tak jak parametr O, z tą różnicą,że tablica nie
uwzględnia kluczy,których wartość wynosi O;
• 2-takjak parametr O, z tą różnicą,że tablica uwzględ
nia wyłącznie klucze,których wartość wynosi O;
• 3 - ciąg znaków zawierającyznaki występujące w ciągu
st r;
• 4-ciąg znaków,zawierający znaki niewystępujące
w ciągu str.
Funkcja crc32(dostępna od PHP 4.0.1)
Deklaracja: i n t crc32 (string str)
Oblicza 32-bitową sumę kontrolną ciągu str.
Funkcja crypt(dostępna od PHP 3)
Deklaracja: s tring crypt (string st r [ ,
string sal t ] I
Koduje ciąg znaków str na podstawie funkcji szyfrujących,
udostępnionych przez system operacyjny(typowo DES). Od
PHP 5.3.0 zawiera własne implementacje algorytmów szyfru
jących i generujących funkcje skrótu.
Funkcja explode(dostępna od PHP 3)
Deklaracja: array explode (string separ ator,
string s tr[, int l imit ] I
Dzieli ciąg znaków str na części rozdzielane znakami sepa
ratora. Opcjonalny argument 1imit(dostępny od PHP 4.0.1)
wskazuje maksymalną liczbę elementów tablicy wynikowej
(od wersji 5.1.0 może mieć wartość ujemną). Jeśli argument
separator będzie pustym ciągiem znaków,funkcja zwraca
wartość fal se. Jeżeliznaki separatora nie będąwystępowa
ły w ciągu str, zwróconyzostanie cały ciąg.
Funkcja fprintf(dostępna od PHP 5)
Deklaracja: int fprintf (resource handle,
string format (, rnixed args [ , mi xed
. „]] )
Zapisuje w strumieniu wskazywanym przez handle dane
znajdujące się w argumentach args, sformatowane według
argumentu format. Zwraca liczbę bajtów ciągu wyniko
wego. Argument format może zawierać znaczniki opisane
przy funkcji sprintf.
Funkcja html_entity_decode(dostępna od PHP 4.3.0)
Deklaracja: s t ri ng html enti ty deco-
de (string str [' rnt ouot
-
e style r'
string charset ] ] )
- -
Wykonuje czynność odwrotną do funkcji htmlenti ties.
Przykładowo ciąg:
&1 t ; b> ; Napis< ; /b> ;
zostanie zamieniony na:NapisOpcjonalny argument quot stylemożeprzyjmować war
tości(domyślnie ENT COMP-:-l\T):
• ENT COMP_l\T .=.konwersji zostaną poddane
cudzysłowy;
• ENT QUOTES - konwersji zostaną poddane apostrofy
i cudzysłowy;
• ENT NOQUOTES - apostrofy i cudzysłowy nie będą
konwertowane.
"Oąg dais;na s;;;;;ie2 "':ł
Ta blice informatyczne. PHP 5
Opcjonalny argument charset określa sposób kodowania znaków. Dopuszczalne wartości to:
Wartość argumentu Alias Zestaw znaków
I so-8859-1 1508859-1 zachodnioeuropejski,Latin1
IS0-8859-15 1508859-15 zachodnioeuropejski,Latin9
UTF-8 wielobajtowy,8-bitowy Unicode
cp866 ibm866,866 cyrylica,strona kodowa 866(DOS)
cpl251 Windows-1251,win-1251,1251 cyrylica,strona kodowa 1251(Windows)
cpl25 2 Windows-1252, 1252 zachodnioeuropejski,strona kodowa 1252(Windows)
KOI8-R koi8-ru, koi8r cyrylica
BIGS 950 chiński tradycyjny
GB2312 936 chiński uproszczony
BIG5-HKSCS chiński tradycyjny z rozszerzeniem dla Hongkongu
Shift JIS SJIS,932 japoński
EUC-JP EUCJP japoński
Pozostałe zestawy znaków nie są rozpoznawane i zamiast
nich wykorzystywane jest kodowanie IS0-8859-1.
Funkcja htmlentities(dostępna od PHP 3)
Deklaracja: string htmlentities (string str
[, int quote style [, string charset (,
bool double encode]l l)
Zamienia znaki specjalne HTML na ciągi w formacie &kod;.
Na przykład ciąg Napiszostanie zmieniony na:
<b>Napis</b>. Znaczenie opcjonal
nych argumentów jest takie, jak w przypadku html en
tity_decocle. Parametr double_encode (dostępny
od PHP 5.2.3) określa, czy kodowane mają być istniejące encje
HTML. Od PHP 5.3.0 argument quote_style może przyj
mować dodatkową wartość ENT_IGNORE powodującą po
mijanienieprawidłowych encji HTML.
Funkcjahtmlspecialchars_decode(dostępnaod PHP 5.1.0)
Deklaracja: string htmlspecialchars clecode
(string str [, int quote style] )
Przekształca encje specjalne na odpowiadające im znaki.
Funkcja odwrotna do htmlspecialchars.
Funkcja htmlspecialchars(dostępna od PHP 3)
Deklaracja: string htmlspecialchars (string
str [, int quote style [, string charset
[' bool double encode]l l)
Znaczenie jest takie samo,jak funkcji htmlentities, z tą
różnicą,że zamieniane są jedynie następujące znaki specjal
ne:
• & zamieniany jest na &;
• ' zamieniany jest na &11039;,jeśli została ustawiona
opcja ENT QUOTES;
• " zamieniany jest na ", jeśli nie została ustawio
na opcja ENT_NOQUOTES;
• zamieniany jest na >.
Funkcja implode(dostępna od PHP 3)
Deklaracja: string implocle (string glue,
array pieces)
Przetwarza tablicę na ciąg znaków. Pomiędzy poszczególne
elementy wstawiany jest ciąg zapisany w argumencie glue.
Funkcja join(dostępna od PHP 3)
Alias dla funkcji implode.
Funkcja lcfirst(dostępna od PHP 5.3.0)
Deklaracja: string lcfirst (string str)
Zwraca ciąg str, w którym pierwszy znak został zamieniony
na wielką literę(o ile ten znak był literą).
Funkcja ltrim(dostępna od PHP 3)
Deklaracja: string ltrim (string str (,
string charlist])
Usuwa z początku ciągu str wszystkie znaki zawarte
w opcjonalnym argumencie charlist. Jeżeli argument
charlist nie występuje, usuwane są znaki:
• spacja(SPACE)-kod ASCII Ox32,
• tabulator(TAB)-kod ASCII Ox09,
• nowa linia(LF)-kod ASCII OxOA,
• powrót karetki(CR)-kod ASCII OxOD,
• znak zerowy(NUL)-kod ASCII OxOO,
• tabulator pionowy-kod ASCII OxOB.
Funkcja md5_file(dostępna od PHP 4.2.0)
Deklaracja: string md5 file (string filename
[, bool raw output])
Oblicza funkcję skrótu dla pliku filename i zwraca ją(lub
false w przypadku niepowodzenia) w postaci ciągu repre
zentującego 32-znakową liczbę heksadecymalną. Opcjonalny
parametr raw_output (domyślnie false) został dodany
w PHP 5 i wymusza zwrócenie wartości w postaci niesforma
towanej.
Funkcja md5(dostępna od PHP 3)
Deklaracja: string md5 (string str (, bool
raw output])
Działanie analogiczne do md5 file, ale operuje na ciągu
znaków str.
-
Funkcja nl2br(dostępna od PHP 3)
Deklaracja: string nl2br (string str [, bool
is xhtml = trueI)
Dodaje przed każdym znakiem nowego wiersza sekwen
cję ( w wersjach PHP do 4.0.5). Od wersji
5.3.0 o postaci sekwencji decyduje opcjonalny argument
is_xhtml.Gdy jest równy true(wartość domyślna), se
kwencją jest ,a gdy jest równy false, sekwencją
jest .
Funkcja number_format(dostępna od PHP 3)
Deklaracja: string number format (float num
ber [, int decimals [� string dec point,
string thousands sep]I)
-
Zwraca sformatowany ciąg znaków, reprezentujący liczbę
number.Możliwe zestawy argumentów:
• Jeżeli jest jeden argument,wartość number zo
staniezaokrąglonado wartościcałkowitej,a grupy
Argument Znaczenie
Znak rocentu.
tysięczne będą oddzielane znakiem przecinka,np.
number_forrnat(124124124.5) da w wyniku
124,124,125.
• Jeżeli są dwa argumenty,pierwszy reprezentuje wartość
liczbową,drugi-liczbę miejscdziesiętnych.Grupy
tysięczne będą oddzielane znakiem przecinka,np.
number_forrnat(l24124124.5, 2) da w wyni
ku 124,124, 124.50.
• Jeżeli są cztery argumenty,pierwszy reprezentuje
wartość liczbową,drugi-liczbę miejsc dziesięt-
nych,trzeci określa separator dziesiętny,a czwarty
-separator grup tysięcznych,np. nurnber for
mat(124l24l24 .5, 2, ',', '.')-da w wyni
ku 124.124 .124,50.
Funkcja ord(dostępna od PHP 3)
Deklaracja: int ord(string str)
Zwracakod ASCII pierwszegoznakuciągustr.
Funkcja parse_str(dostępna od PHP 4)
Deklaracja: void parse str (string str [,
array &arr])
-
Przetwarza ciąg strtak,jakby był ciągiem adresu URL znaj
dującym się za znakiem ? (tzw. query string) i ustawia od
czytane parametry jako zmienne w bieżącym zasięgu. Użycie
tablicy jako drugiego argumentu spowoduje,że odczytane
dane zostaną umieszczone w tej tablicy.
Funkcja printf(dostępna od PHP 3)
Deklaracja: void printf (string format [ ,
mixed args])
Działanieanalogicznedo sprintf,jednak wynikkierowany
jest do standardowego wyjścia.
Funkcja quoted_printable_decode(dostępna od PHP 3.0.6)
Deklaracja: string quoted_printable_decode
(string str)
Dekoduje ciąg znaków zapisany w standardzie quoted
printable.
Funkcja quoted_printable_encode(dostępna od PHP 5.3.0)
Deklaracja: string quoted printable encode(
string str)
-
Koduje ciąg znaków zgodnie ze standardem quoted
printable.
Funkcja quotemeta(dostępna od PHP 3)
Deklaracja: string quotemeta(string str)
Dodaje znak backslash(\) przed każdym ze znaków: . \ +
* ? ' $ [ l ( ).
Funkcja rtrim(dostępna od PHP 3)
Deklaracja: string rtrim(string str [,
string charlist])
Usuwa z końca ciągu str wszystkie znaki zawarte w opcjo
nalnym argumencie charlist. Jeżeli argument char-
1ist nie występuje,usuwane są tzw. białe znaki(uwzględ
nione w opisie ltrim).
Funkcja sha1_file(dostępna od PHP 4.3.0)
Deklaracja: string shal file(string filename
[, bool raw outputJl
Oblicza, według algorytmu SHAl, funkcję skrótu dla pliku
o nazwie filename i zwraca ją(lub false w przypadku
niepowodzenia) w postaci ciągu znaków, reprezentującego
40-znakową liczbę heksadecymalną. Opcjonalny parametr
raw_output(domyślnie false) został dodany w PHP 5
i wymusza zwrócenie wartości w postaci niesformatowanej.
Funkcja sha1(dostępna od PHP 4.3.0)
Deklaracja: string shal(string str [, bool
raw output])
Działanie analogiczne do shal file, ale operuje na ciągu
znaków str.
-
Funkcja sprintf(dostępna od PHP 3)
Deklaracja: string sprintf Istring format (,
mixed args])
Zwraca ciąg znaków sformatowany według argumentu for
mat. Argument format może zawierać dowolne znaki oraz
specyfikatory konwersji rozpoczynające się od znaku %, po
którym umieszcza sięparametryw następującej kolejności:
1. Opcjonalne określenie znaku wartości(+ lub-).
2. Opcjonalne wypełnienie. Określa znak, jaki ma zostać
użyty do wypełniania wolnego miejsca. Może to być
spacja(domyślnie) lub o;jeśli wypełnieniem ma być inny
znak,należy poprzedzić go znakiem '.
3. Argument opcjonalny,który określa wyrównywanie cią
gu(domyślnie wyrównywanie do prawej). Znak - ozna
cza przełączenie na wyrównywanie do lewej.
4. Argument opcjonalny, który określa minimalną długość
ciągu wynikowego w znakach.
5. Argument opcjonalny,który określa precyzję,czyli licz
bę miejsc dziesiętnych(dla liczb zmiennopozycyjnych).
6. Wymagany specyfikator typu,który określa sposób trak
towania danych,może przyjmować wartości z poniższej
tabeli.
Argument będzie traktowanyjako liczba całkowita i prezentowany w formacie binarnym.
Argument będzie traktowanyjako liczba całkowita i prezentowanyjako znak w standardzie ASCII.
Argument będzie traktowanyjako liczba całkowita i prezentowanyjako liczba dziesiętna ze znakiem.
Argument będzie traktowanyjako liczba w postaci wykładniczej. Użyta zostanie mała litera e.
Argument będzie traktowanyjakoliczba w postaci wykładniczej. Użyta zostanie wielka litera E.
Argumentbędzietraktowany iprezentowanyjakoliczba zmiennopozycyjna(zuwzględnieniem ustawień lokalnych).
Argumentbędzietraktowanyiprezentowanyjakoliczbazmiennopozycyjna(bezuwzględnianiaustawieńlokalnych).
Argument będzie traktowany jako liczba całkowita i prezentowany w formacie ósemkowym.
Argument Znaczenie
Argument będzie traktowany i prezentowanyjako ciągznaków.
Argument będzie traktowanyjako liczba całkowita i prezentowanyjako liczbadziesiętnabez znaku.
Argument będzietraktowanyjako liczba całkowita i prezentowany w formacie szesnastkowym.
Użyte zostanąmałe literya- f.
Argument będzie traktowany jako liczba całkowita i prezentowany w formacie szesnastkowym.
Użyte zostanąwielkie litery A- F.
Prezentacja liczby w różnych notacjach:
echo sprintf("24 dziesiętnie to %d\n", 24);
echo sprintf("24 binarnie to %b\nłl, 24);
echo sprintf(1124 oktalnie to ruo\n", 24);
echo sprintf("24 heksadecymalnie
'-+-to %x\n", 24);
Formatowanie liczb zmiennopozycyjnych:
echo sprintf("Formatowanie domyślne
"+%f\n", 1 .49);
echo sprintf ("Owa miejsca po przecinku
"-+-% .2f\n", 1.49);
echo sprintf("Dwa miej sca po przecinku,
"-+-wypełnienie zerami :COS.2f\n", 1 . 49);
Wiele argumentów:
echo sprintf("Data: 04d-<;..02d-%02d",
'+2005, 2, 1);
Funkcja sscanf(dostępna od PHP 4.0.1)
Deklaracja: mixed sscanf Istring str, string
format [, mixed & „.])
Odwrotność funkcji sprintf. Przetwarza ciąg znaków str
zgodnie z formatem podanym w argumencie format. Ciąg
formatujący budowany jest zgodnie z zasadami podanymi
przy opisie funkcji sprintf.
Funkcja str_ireplace(dotępna od PHP 5)
Deklaracja: mixed str ireplace (mixed se
arch, mixed repldce, mixed subject [,
int &count])
Wykonuje to samo zadanie co str replace, ale nie
uwzględnia wielkości liter.
-
Funkcja str_pad(dostępna od PHP 4.0.1)
Deklaracja: string str pad(string input, int
pacl_length [, string pad_string [, int
pad type]J)
Dopełnia ciąg znaków input do rozmiaru pad length
znakami zapisanymi w pad_string (domyślnie spacje).
Argument pad_type może przyjmować następujące war
tości(domyślnie STR PAD RIGHT):
• STR_PAD_RIGHT-
-
wypełnienie do prawej;
• STR_PAD_LEFT-wypełnienie do lewej;
• STR_PAD_BOTH-wypełnienie od prawej i do lewej.
Funkcja str_repeat(dostępna od PHP 4)
Deklaracja: string str repeat(string input,
int multiplier)
-
Zwraca ciąg input powtórzony multiplier razy.
Funkcja str_replace(dostępna od PHP 3.0.6)
Deklaracja: mixed str replace(mixed search,
mixed replace, mixed subject [, int &co
unt]I
Zwraca ciąg znaków lub tablicę,w której w ciągu subject
każde wystąpienie ciągu search zostało zastąpione przez
ciąg replace.
Funkcja str_split(dostępna od PHP 5)
Deklaracja:array str split(string str [, int
split length] I
-
Przeksztalca ciągna tablicę podciągów. Liczba podciągów jest
określana przez split length.
Funkcja str_word_count(dostępna od PHP 4.3.0)
Deklaracja: rnixed str warci count(string str
[, int format [, string charlist]J)
Oblicza liczbę słów w ciągu.Typ zwracanej wartości zależy od
wartościdrugiegoargumentu(domyślnie jest on równy O):
• O-zwrócona zostanie wartość typu integer;
• 1-zwrócona zostanie tablica zawierająca wszystkie
słowa z ciągu;
• 2-zwrócona zostanie tablica asocjacyjna,w której
kluczami będą pozycje poszczególnych słów w ciągu,
a wartościami kluczy będą słowa.
Dostępny od PHP 5.1.0 opcjonalny parametr charlist po
zwala określić dodatkowe znaki,które mają być traktowane
jak słowa.
Funkcja strcasecmp(dostępna od PHP 3.0.2)
Deklaracja: int strcasecmp (string strl,
string str2)
Porównuje dwa ciągi bez rozróżniania wielkości liter. Zwraca
wartość mniejszą od zera,jeżeli strl < str2, wartość
większą od zera,jeżeli strl > str2,lub zero,jeśli strl
= str2.
Funkcja strcmp(dostępna od PHP 3)
Deklaracja: int strcmp (string strl, string
str2)
Działa analogicznie do strcasecrnp, ale uwzględnia wiel
kości znaków.
Funkcja strcoll(dostępna od PHP 4)
Deklaracja: int strcoll (string strl, string
str2)
Porównuje ciągi strl i str2 z uwzględnieniem ustawień
lokalnych(narodowych).
Funkcja strcspn(dostępna od PHP 4)
Deklaracja: int strcspn (string strl, string
str2[, int start [, int length]])
Zwraca długość pierwszego segmentu ciągu str, który
nie zawiera żadnego ze znaków występujących w str2.
Opcjonalny argument start określa miejsce, w którym ma
się rozpocząć przeszukiwanie,natomiast lenght-liczbę
uwzględnianych znaków.
Funkcja strip_tags(dostępna od PHP 3.0.8)
Deklaracja: string strip tags (string str [,
string allowable tags]l
Usuwa z ciągu str znaezniki HTML i PHP oraz znaki NUL
(okodzie O).
Funkcja stripcslashes(dostępna od PHP 4)
Deklaracja: string stripcslashes(string str)
Usuwa znaki lewego ukośnika (backslash), odwrotność
funkcji aclclcslashes. Sekwencje specjalne pozostawia
nienaruszone.
Funkcja stripos(dostępna od PHP 5)
Deklaracja: int stripos(string haystack,
string needle [, int offset]I
Wersjafunkcji strpos, nieuwzględniająca wielkości znaków.
Funkcja stristr(dostępna od PHP 3.0.6)
Deklaracja: string stristr(string haystack,
string needleI
Wersja funkcji strstr nieuwzględniająca wielkich i małych
liter.
Funkcja strlen(dostępna od PHP 3)
Deklaracja: int strlen (string str)
Zwraca długość ciągu str.
Funkcja strpos(dostępna od PHP 3)
Deklaracja: int strpos (string haystack,
string neeclle [, int offset])
Zwraca pozycję pierwszego wystąpienia ciągu needle
w ciągu haystack.
Funkcja strstr(dostępna od PHP 3)
Deklaracja: string strstr(string haystack,
string neeclle, bool before needle)
Zwraca część ciągu haystack rozpoczynającą się od pierw
szego wystąpienia ciągu needle i kończącą się w końcu
ciągu haystack(rozróżnia małe i wielkie litery). Parametr
before_needle (domyślnie równy false) został wpro
wadzony w PHP 5.3.0. Jeśli zostanie ustawiony na true,
funkcja zwróci część ciągu haystack znajdującą się przed
podciągiem needle.
Funkcja strtok(dostępna od PHP 3)
Deklaracja: string strtok (string argl,
string arg2I
Dzieli ciąg argl na mniejsze ciągi (tokeny) względem zna
ków zawartych w argumencie arg2.
Funkcja strtolower(dostępna odPHP 3)
Deklaracja: string strtolower (string str)
Zamienia wszystkie znaki w ciągu str na małe litery.
Funkcja strtoupper(dostępna od PHP 3)
Deklaracja: string strtoupper (string str)
Zamienia wszystkie znaki w ciągu str na wielkie litery.
Funkcja substr_count(dostępna od PHP 4)
Deklaracja: int int substr count(string hay
stack, string needle [,- int offset = O [,
int length]])
Zlicza wystąpienia ciągu needle w ciągu haystack.
Opcjonalne argumenty offset i length (dostępne od
PHP 5.1.0) pozwalają określić miejsce, od którego ma się za
cząć przeszukiwanie, oraz liczbę przeszukiwanych znaków.
Funkcja substr(dostępna od PHP 3)
Deklaracja: string substr Istring str, int
start [, int length] I
Zwraca fragment ciągu str rozpoczynający się od znaku
o indeksie start o długości length.
Funkcja trim(dostępna od PHP 3)
Deklaracja: string trim (string str (,
string charlist])
Usuwa z początku i końca ciągu str wszystkie znaki zawarte
w opcjonalnym argumencie charlist. Jeżeli argument
charlist nie występuje, usuwane są tzw. białe znaki
(uwzględnione w opisiefunkcji1trim).
Funkcja ucfirst(dostępna od PHP 3)
Deklaracja: string ucfirst(string str)
Zwraca ciąg str rozpoczynający się wielką literą.
Funkcja ucwords(dostępna od PHP 3.0.3)
Deklaracja: string ucwords(string str)
Zwraca przetworzony ciąg str, w którym każde słowo rozpo
czyna się wielką literą.
Funkcja wordwrap(dostępna od PHP 4.0.2)
Deklaracja: string wordwrap (string str [,
int width [, string break [, boolean
cut]] l)
Dzieli ciąg str tak,aby powstała kolumna o długości width
(domyślnie 75 znaków). Parametr break wskazuje,jakie zna
ki mają być dodawane nakońcu każdego wiersza. Jeżeli argu
ment cut jest równy false(wartość domyślna),dzielenie
odbywa się w taki sposób,aby zostały zachowane całe słowa.
Typy złożone
Typ tablicowy
Tablice można tworzyć,używając wyrażenia array I) z od
powiednimi argumentami lub klasycznej konstrukcji z nawia
sami kwadratowymi. W pierwszym przypadku schemat jest
następujący:
$tab = array(
) ;
"kluczl11 => 111.,..ar.cośćl",
Tl
k1 lJ C:::2 " => IT l·Jarto,r;ć2" I
11J:luczN" => 111vartoś.JN"
W drugim:
$tab["kluczl"] = "1-.rartqSćl";
$tab["k1ucz2"] = " 11artość2";
$tab["kluc::N11] => " ;1artość:J" ;
Kluczami mogą być liczby całkowite(tablice indeksowane nu
merycznie) lub ciągi znaków(tablice asocjacyjne)-oba typy
traktowane są jednakowo.Można utworzyć pustą tablicę:
$tab = array II ; ,
Przy tworzeniu tablicy dopuszcza się pomijanie wartości klu
czy - powstanie wtedy tablica indeksowana numerycznie.
Indeksy zostaną utworzone automatycznie(od O do N),np.:
$tab = array(1, 8, 15);
co jest równoważne zapisowi:
$tab[] = l; $tab[]=8; $tab[J=l5;
Dodawanie danych:
$arr = array I);
$arr[0] = l;
$arr[l] = 2;
$arr["pierwsza liczba"] = 5;
$arr["druga liczba"] = "osiemnaście";
Modyfikowanie danych:
$arr = array(l, 2, 3, 4, 5);
$arr[4] = l;
$arr[O] = 5;
Tab l ice informatyczne. PHP 5
Usuwanie danych:
$arr = array ( l , 2 , 3 , 4, 5) ;
I/usunięcie ostatniego elementu
unset ( $:arr [ 4] ) ;
1 /usunięcie całej tabl icy
unset ( $arr) ;
Typ obiektowy
Typ obiektowy został opisany w sekcji„Klasy i obiekty''.
Typy specjalne
Typ resource
Wprowadzony w PHP 4 specjalny typ danych, przechowujący
odniesieniedo zasobów zewnętrznych(ang. resource), takich
jak: elementy systemu plików, połączenia z bazami danych.
Zasoby i zmienne typu resource tworzy się za pomocą
funkcji specjalnych.
Operatory logiczne
Operator Znaczenie Przykład Opis
Typ null
Typ null jest typem specjalnym, informującym, że dana
zmienna nie przechowuje żadnej wartości. Jego użycie jest
wzasadzie takie samo,jak w innychjęzykach programowania.
Przypisanie zmiennej wartości null odbywa się następująco:
$zmienna = nul l ;
Wielkość liter nie ma znaczenia.
Opęraiory
Operatory arytmetyczne
Operator Znaczenie
dodawanie
odejmowanie
mnożenie
dzielenie
dzieleniemodulo
Przykład
$a + $b
$a - $b
Sa * $b
Sa I $b
Sa % $b
and logiczneAND $a an $b Wynikiem jesttrue, jeśliobaoperandy mają wartość true.
logiczne OR $a or $b Wynikiem jest true, jeśli przynajmniejjeden operand ma wartość t rue.
logiczne XOR $a xor $b Wynikiem jest true, jeśli operandy mają przeciwne wartości logiczne.
logiczna negacja ! $a Zmienia logiczną wartość na przeciwną.
& & logiczne AND $a && Sb Wynikiem jest t rue, jeśli oba operandy mają wartość true.
I I logiczne OR $a 1 1 $b Wynikiemjest true,jeśli przynajmniej jeden operand ma wartość t rue.
Operatory bitowe
Operator Znaczenie Przykład Opis
iloczyn bitowy AND $a & $b Odpowiednibitbędzie ustawiony, jeśli oba bity składowe sąrówne 1 .
suma bitowa OR $a I &b
Odpowiedni bit będzieustawiony, jeśli przynajmniejjeden z bitów
składowych jest równy 1.
suma bitowa XOR $a Ą $b Odpowiedni bit będzie ustawiony, jeśli bity składowe są różne.
negacja bitowa - $a Wszystkie bity otrzymują wartość przeciwną do bieżącej.
przesunięcie w lewo $a « $b Przesuwa wszystkiebityzmiennej $a o $b kroków w lewo.
przesunięcie w prawo $a » $b Przesuwa wszystkie bity zmiennej $a o $b kroków w prawo.
Operatory porównywania
Operator Znaczenie Przykład Opis
równy $a �= $b Wynikiemjest true, jeśli $ a jestrówne $b.
identyczny $a === $b
Wynikiem jesttrue, jeśli $a jest równe $b i oba operandy są tego
samego typu.
' = różny $a ! = $b Wynikiem jest true, jeśli $a jest różne od $b.
różny $a <> $b Wynikiemjest true, jeśli $a jestróżneod $b.
' == nieidentyczny $a ! == $b
Wynikiem jest true, jeśli $a jest różne od $b lub operandy nie są
tego samego typu.
mniejszy $a < $b Wynikiem jest true, jeśli $ajest mniejsze od $b.
większy $a > $b Wynikiem jest true, jeśli $ajest większe od $b.
mniejszy lub równy $a <= $b Wynikiem jest true, jeśli $a jest mniejsze lub równe $b.
większy lub równy $a >= $b Wynikiem jest true, jeśli $a jest większe lub równe $b.
Operator warunkowy
Operator warunkowy ma postać:
1vy e.niel ? ...J:{}-ra �eni e2 1vyra ::eni e3
Konstrukcja ta oznacza:Jeżeli wartością wyrażenia 11yra że
ni e1(warunku) jesttrue, wynikiem jest wartość wyrażenia
ivyra żeni e2, w przeciwnymprzypadkuwynikiem jest war
tość wyrażenia Dla zwiększenia czytelności można dodać nawias w wyraże
niu warunkowym:
$11_Ynik = ( $max == 10 0 ) ? " równe " " różne " ;
Operatory przypisania
Operator ���f!!��ania
Znaczenie
$a = $b $a = $b
$a += $b $a = $a + $b
$a -= $b $a = $ a - $b
$a *= $b $a = $a * $b
I= $a /= $ b $a = $a I $b
i!; = $ a %= $b $a � $a % $b
&= $ a & = $b $a = $a & $b
1 � $a I = $b $a � $a I $b
$a � $a Ą $b
$a «• $b $a = $a << $b
$a >>= $b $a = Sa >> $b
$a . = $b $a = $a . $b
Operator łańcuchowy
Operatorem łańcuchowym jest . (kropka). Operator ten do
konuje konkatenacji, czyli łączenia łańcuchów znakowych.
Przykładowo wynikiem działania instrukcji:< ?php
$ s trl = " To j es t " ;
$ s tr2 = "pr zykładowy tekst . " ;
$ s tr3 � $s trl . " " . $ str2 ;
echo ( $ s t r3 ) ;
?>będzie wyświetlenie ciągu znaków: To je s t przykła
dowy tekst.
Operatory rzutowania typów
Operator Znaczenie
Operator łączenia tablic
Operatorem łączenia tablicjestznak plus(+). Do tablicy znaj
dującejsię po lewej stronieoperatorazostanie dodanazawar
tość tablicy znajdującej się po prawej stronie. Jeżeli w obu
tablicach znajdą się elementy o takich samych indeksach,
pozostaną one w formie niezmienionej, tzn. będą miały takie
samewartości, jakelementy z tablicyznajdującej się po lewej
stronie. Przykładowo:< ?php
$a � array ( 1 => 1, 2 => 2 , 3 => 3 ) ;
$b = array ( 3 => " tr z y " , 4 => " c:.:te ry " ,
'+ 5 � > "p ięć " ) ;
$c = $a + $b;
var dump ( $c ) ;
? > -
Operatory inkrementacji i dekrementacji
Operator inkrementacji ma postać + + i powoduje zwiększe
nie wartości zmiennej o jeden. Występuje on w dwóch for
mach: przyrostkowej i przedrostkowej. Forma przedrostkowa
(++$zmienna) powoduje zwiększenie wartości zmiennej
przed jej wykorzystaniem, natomiast forma przyrostkowa
($ zmienna++) - po jej wykorzystaniu. Operator dekre
mentacji ma postać --, a jego działanie powodujezmniejsza
nie wartości zmiennej o jeden.
Operator kontroli błędów
Operatorkontroli błędów oznaczany jest znakiem @. Jeżelizo
stanie postawiony przez wyrażeniem, to gdyby wygenerowa
ło ono błąd, zostanie on zignorowany i żaden komunikat nie
pojawi się na ekranie. Gdy jest włączona opcja t rack_er
rors, komunikat o błędzie będzie zapisany w zmiennej glo
balnej $php errormsg. Należy pamiętać, że zmienna ta
jest nadpisywanaprzy każdym wystąpieniu kolejnego błędu. -
Operator wykonania
polecenia zewnętrznego
Polecenie zewnętrzne jest wykonywane przez ujęcie go
w znaki lewego apostrofu · · , np. · ls -l a · . Wynik wyko
nania polecenia zewnętrznego staje się rezultatem działania
operatora, np. $lista = · is -1a · ; .
(boolean) lub (boo l ) konwersjadotypu boolean
( integer) lub ( in t ) konwersjadotypu całkowitoliczbowego
( doub l e ) lub ( float ) , lub ( re a l ) konwersjadotypu zmiennoprzecinkowego
( s t ri ng ) konwersja do typu łańcuchowego
( ar ray) konwersja do typu tablicowego
( obj ect ) konwersja do typu obiektowego
( u n s e t ) konwersjadotypu NULL(w PHP 5 lub nowszych)
Operator kontroli typów
Operatorem kontroli typów jest instanceof. Zwraca
t rue, jeżeli dany obiekt jest instancją pewnej klasy, np.:
i f ( $obj instanceof Abc ) echo ' $obj j e s t
'-+instancją klasy Abc 1 ;
Operator tworzenia obiektów
Do tworzenia obiektów służy operator new. Schematyczne
wywołanie operatora new wygląda następująco:
$obiekt = new nazo·1a klasy ( argumen ty
"-+kons truktora ) ;
-
Priorytety opera!orów
Lp. Rodzaje operatorów
Klonowanie i tworzenie obiektów
Indeks tablicy
lnkrementacja, dekrementacja
Negacja bitowa, zmiana znaku wartości, konwersje typów,
kontrola błędów
Kontrola typów
Negacja logiczna
Mnożenie, dzielenie, resztaz dzielenia
Dodawanie, odejmowanie, łączenie łańcuchów znakowych
Przesunięcia bitowe
10 r
u
e�a
r
2!��riejsze, większe,mniejsze lub równe, większe
11 Relacje(równe, identyczne, różne, nieidentyczne)
12 Iloczyn bitowy
13 Bitowa różnica symetryczna
14 Suma bitowa
1S Iloczyn logiczny
16 Suma logiczna
17 Warunkowy
18 Operatory przypisania
19 Iloczyn logiczny
20 Logiczna różnica symetryczna
21 Suma logiczna
22 Rozdzielanie wyrażeń
Lista słów kluczowych
Operator klonowania obiektów
Do klonowania obiektów, czylitworzenia wiernej kopii obiek
tuzachowującej występujące w nim referencje,sluży operator
clone. Typowe wywołanie ma postać:
$zmienna = clone $obiekt ;
Operator rozdzielania wyrażeń
Operator , (przecinek) pozwala na oddzielenie od siebie wy
rażeń. Najczęściejużywany jest w pętli typu for, np.:
fo� (i � O , j � 1 0 0 ; i < 1 0 0 , j
4i++, j --) {
/ * instrukc j e wrn; trza pętli ' I
Symbole
clone, new
[ ]
++, --
-, +, -, { int) , ( f l oat) , ( s t ri ng ) ,
( array) , ( obj ect ) , @
ins tanceof
*, /, %
+, -, .<<, >><, >, <=, >=
==
, ===, ! =, I ==
& &
l i
? :
=, +=, -=
, • =, / =, . =, %=, &=,
"'=, I =, <<=, >>=
and
Wiązanie
bezwiązania
lewe
bezwiązania
prawe
bez wiązania
prawe
lewe
lewe
lewe
bez wiązania
bez wiązania
lewe
lewe
lewe
lewe
lewe
lewe
prawe
lewe
lewe
lewe
lewe
Słowa oznaczone symbolem • są zarezerwowane od PHP 5.3, natomiast oznaczone symbolem ** są zarezerwowane tylko
w PHP 4, a w nowszych wersjach można je stosować.
ab s t ract con s t endif
and cont inue endswitch
array ( ) declare endwhile
defau lt extends
break do final
else for
catch elseif foreach
cfunct ion enddeclare funct1on
c l a s s endfo r global
c l one endforeach go to
Z�jenne
Tworzenie i typy zmiennych
Zmienne rozpoczynają się od znaku $, po którym następuje
nazwa zmiennej. Nazwa ta może zaczynać się od litery lub
znaku podkreślenia, po których może nastąpić dowolna
kombinacja liter, cyfr i znaków podkreślenia. Prawidłowe są
zatem nazwy:
$ zmienna
$ zmienna 1
$_12 3 -
$ 1 zmienna
Przypisaniewartościdozmiennej odbywa sięza pomocąope
ratora =. Można zatem napisać:
$ l i czba = 1 2 4 ;
$napis = 11 t e ks t 11 ;
Typ zmiennej jest przypisywanyautomatycznie,w momencie
nadania jej wartości. Zatem w pierwszym przypadku powsta
ła zmienna typu całkowitoliczbowego, a w drugim-zmien
na typu s t ring.
Ponowne przypisanie wartości do zmiennej zmienia jej typ:
$zmienna = 1 2 4 ' 7 / z111ienna typu inte-ger
$ :mienna = " tekst " ; / / zmiana typu
'-na s t ring
$ zmienna = 1 . 2 4; / / zmiana typu na float
Rzutowanie i konwersja typów
Rzutowanie typów odbywa się za pomocą operatorów rzu
towania. Zmienną należy poprzedzić nazwą typu, na który
dokonywane jest rzutowanie, ujętą w nawias okrągły.< ?phE
$napi s = " 1 5 0 . 3 4 t o j e s t napi s " ;
echo 1 1 y p s t ring : $napi s \ n " ;
Nazwa funkcji Opis
i f publ ic
implements s t a t i c
ins tanceof swi tch
inte r face throw
name s pace try
a l d funct ion
while
private
p rotect ed
$ l i czba = ( double ) $nap i s ;
echo " typ double : $ l iczba \n " ;
$l i czba = ( int eger ) $napi s ;
echo ( " typ integer : $ l i czba \n '1 ) ;
$liczba � (intege r) (doub le!) $napis ;
echo "po dwukrotnym rzutowaniu : $liczba\n11 ;
?>Zmiany typu zmiennej można dokonać również przy użyciu
jednej z funkcji konwertujących:
• intval - konwersja na typ integer,
• doub leval(lub floatval)-konwersja na typ
double,
• st rva l - konwersja na typ s tring.
Typ zmiennej może być ustalony za pomocą funkcji
settype:
bool settype (mixed var, s t ring typ )
Argument t yp może przyjmować jedną z następujących
wartości:
• "boolean" lub "boo l "-dla typu boolowskiego,
• " integer" lub " int"-dla typu całkowitoliczbo
wego,
• " float " lub "double "-dla typu zmiennoprzecin-
kowego(zaleca się używanie float),
• " s t ring "-dlatypułańcuchowego,
• "array" -dla typu tablicowego,
• "obj ect " -dla typu obiektowego,
• "null "-dlatypU NULL.
Kontrola typów
PHP udostępniazestawfunkcjiumożliwiających stwierdzenie,
jakiego typu jest zmienna.
get type ( ) Zwraca ciąg znaków, określający typ zmiennej, lub unknown, gdy typ jest nieokreślony.
is_int ( ) Zwraca wartość true, jeżeli argument jest liczbą całkowitą, lub false w przeciwnym przypadku.
is i n teger ( ) Zwraca wartość t rue, jeżeli argument jest liczbą całkowitą, lub fals e w przeciwnym przypadku.
is_long( ) Zwraca wartość true, jeżeli argument jest liczbą całkowitą, lub fals e w przeciwnym przypadku.
i s_double ( ) Zwraca wartość t rue, jeżeli argument jest liczbą rzeczywistą, lub fals e w przeciwnym przypadku.
is float ( ) Zwraca wartość true, jeżeli argument jest liczbą rzeczywistą, lub fa1 se w przeciwnymprzypadku.
i s_rea l I ) Zwraca wartośćtrue, jeżeli argument jest liczbą rzeczywistą, lub false w przeciwnym przypadku.
is bool ( ) Zwraca wartość t rue, jeżeli argument jest zmienną logiczną, lub false w przeciwnym przypadku.
i s_array ( ) Zwraca wartość true, jeżeli argument jest tablicą, lub fal se w przeciwnym przypadku.
i s_s tring ( ) Zwraca wartość t rue, jeżeli argument jest ciągiem znaków, lub fals e w przeciwnym przypadku.
is_objec t ( ) Zwraca wartość true, jeżeli argument jest obiektem, lub fals e w przeciwnym przypadku.
Tablice informatyczne. P H P 5
St�łe
Do utworzenia stałej może być użyta funkcja de fine lub
(od PHP 5.3.0) słowo kluczowe const. Schemat użycia
define:
de fine ( "N.l'1::;rvA_STJłŁEJ" , wartość) ;
np.:
define ( " PI " , 3 . 1 4 1 5 9 2 65 ) ;
define ( 11KOMUNIK.A.T 11 , "To j est treść
"-+-komunikatu " ) ;
Schemat użycia con st:
const !'lii.ZWA_ :3T.f!ŁEJ = r·1ar tość;
np.:
const PI = 3 . 1 4 1 5 9 2 65 ;
const KOMUNIKAT = "T.o j est treść
"-+kcmunikatu " ;
Ten sposób definiowania stałych może być użyty tylko w za
sięgu ogólnym (na najwyższym poziomie, poza funkcjami
i klasami). Raz ustalonej wartości stałej nie można zmieniać,
wolno jąjedynie odczytywać.
Instrukcje warunkowe
Instrukcja if„.else
Klasyczna instrukcja i f . . . e l s e ma postać:
i f
)
el se I
i n s trukcje:!
)
Jeżeli i;arunek jest prawdziwy, zostaną wykonane i n
s trukcj el, w przeciwnym razie-i n s trukcj e2. Blok
e l s e jest opcjonalny.
Instrukcja if„.else if
Instrukcja złożona i f . . . e l s e i f ma postać:
i f
)
/ /dalsze bloki else .if
else {
i n s t rukcjc-.V
)
Jeżeli 11aru nek jest prawdziwy, zostaną wykonane i n
s trukcj el, w przeciwnym razie, jeśli prawdziwy jest
1'arunek2, zostaną wykonane ins trukcje2 itd. Jeżeli
żaden z warunków nie jest prawdziwy, zostanie wykonany
blok e 1s e, jest on jednak opcjonalny.
Instrukcja switch
Instrukcja warunkowa switch może zastąpić serię instruk
cji i f . . . el se i f:
switch ( ivyra :ćiani e ) (
)
case ivart oSCl : i nstrukcj el ,· break;
case 1·1a r c 0Sć.:? : i ns trukcj e2 ; break;
I /dals 2e bloki case
Jeżeli 11yra żenie ma wartość 11artośćl, wykonywane
są i ns t rukcjel; jeśli wartością wyrażenia jest 11ar
toś ć2, wykonywane są i n s t rukcj e2 itd.Jeżelinie uda
się dopasować wartości wyrażenia do wartości występują
cych po klauzulach c as e, wykonywane są instrukcje wystę
pujące po siewie de fault.
Pętle
Pętlawhile
Pętla typu while ma postać:
while ( 1varunek) {
i n s trukcje ;
)
Co oznacza: dopóki warunek jest prawdziwy, wykonuj
instrukcje. Przykład:
$ count � 5 ;
whi le ( $ count-- > 0 ) I
echo ( $ count) ;
Pętlado.„while
Pętla do . . . while jest odmianąpętliwhile o postaci:
do {
ins trukcj e ;
)
while ( 1.;arunek) /
Co oznacza: wykonuj instrukcje, dopóki warunek jest praw
dziwy. Przykład:
$count = 4 ;
do {
echo ($ count ) ;
I
wh.ile ( $count-- > O l
Pętlafor
Postać for ma postać:
for ( 1q.ra żeni el ; h'y:r:a :: en i e2 ; 1·:yra 2eni e3) {
/ / instrukcj e
Wyrażenie 11yra żeni el inicjuje wartość zmiennej iteracyj
nej (kontrolującej przebiegi pętli). wyra żeni e2 to waru
nek zakończenia pętli. 11yrażen i e3 modyfikuje zmienną
iteracyjną:
for ( $ count � 4; $count >= O ; $ count-- ) {
echo ( " $ count " ) ;
Pętlaforeach
Pętla foreach jest użyteczna, gdy istnieje konieczność
dostępu do kolejnych elementów tablicy lub(począwszy od
PHP 5) składowych obiektu. Występuje w dwóch postaciach:
foreach( $tablica as $.11a.rtość) {
i n s t..rukcje;
oraz
foreach ( $ tablica as $ klucz �> $ wa r t ość)
{
i n s t1-ukcje ;
I
W pierwszym przypadku nie ma dostępu do aktualnej warto
ści klucza, w drugim dostęp jest: => 1 dwa ' ,
, trzy ' => 3 , '
I /Lu nie ma dostępu do
foreoch ( $tab as $v) {
echo ( " $v \n " ) ;
)
klucza
I/tu j est do s tęp do warto ści klucza
fo reach ( $ tab as $key => $v) I
echo { " tab l $ key) � $v \n " ) ;
)
?>Instrukcje break i continue
Instrukcja break służy do przerwania danej iteracji pętli
for, foreach, while lub do„.whi l e bądź też bloku
switch. Jej ogólna postać to:
break [N) ;
gdzie Nto opcjonalny argument, który w przypadku instruk
cji zagnieżdżonych wskazuje, ile poziomów zagnieżdżenia
ma być przerwane.
Instrukcja continue powoduje przejście do kolejnej
iteracji pętli lub instrukcji swi tch (co jest równoznaczne
z opuszczeniem tej instrukcji). Schemat użycia con t i nue:
continue [N] ;
Argument N jest opcjonalny i w pętlach zagnieżdżonych
określa, w której pętli ma być kontynuowana iteracja.
Instrukcja goto
Instrukcja go to(dostępna odPHP 5.3.0) powodujeprzeskok
w programie do miejsca oznaczonego etykietą wskazaną
w wywołaniu g oto. Schemat użycia:
goto e tyki .c tia ;
Etykieta powinna być wskazana przez nazwę zakończoną
znakiem dwukropka, np.:
etykieta :
Można przeskakiwać wyłącznie do miejsca skryptu znajdują
cego się w tym samym zasięgu(kontekście) wbieżącympliku,
niemożna wykonać przeskoku do funkcji, metody czy pętli.
Składnia alternatywna
Zarówno dla pętli for, foreach, wh i le, jak i dla instruk
cji warunkowych i f, i f . . . el s e, swi tch istnieje skład
nia alternatywna. Ma ona ogólną postać:
endins t.rukcj a ;
Instrukcjewarunkowe
Blok instrukcji warunkowych i f . . . el se i f w postaci:
if ( $ a < $b i I
ecłio ( " $a j est mniej s ze od $b " ) ;
I
else if ( $ a > $b) I
echo ( " $a j est i·Jię ks ze od $b " ) ;
)
po zapisaniu przy użyciu składni alternatywnej będzie miał
postać:
if ( $ a < $bi :
echo ( " $a j es t mniej s ze od .$b" ) ;
elseif > $bi :
endi f ;
Pętle
j est większe od · b " ) ;
Pętla wh i le w postaci:
while { $a < $b) I
print ( " $ a" ) ;
$a + = 1 ;
)
po zapisaniu przy użyciu składni alternatywnej będzie miała
postać:
Pętla for w postaci:
for { $count � 4 ; $count >= O ; ęcount- - 1 {
echo ( 11 $count 11 ) ;
I
po zapisaniu przy użyciu składni alternatywnej będzie miała
postać
for ( $ count � 4 ; $count >= O; $count- - ) :
echo ( 11 $ count " ) ;
endfor;
Z ;funk_cj!'!
Deklaracje
Funkcje definiowane są za pomocą słowa kluczowego
function, po którym następuje nazwa funkcji oraz lista
argumentów ujętych w nawias okrągły.Schematycznie:
funct ion funkcja ( a r..g.I , 'J.rg:? , . . . , argN) {
ins trukcj e ;
I
Nazwa funkcji może zawierać dowolną kombinację liter, cyfr
i znaków podkreślenia -nie może się jednak zaczynać od
cyfry.W ciele(we wnętrzu) funkcji można zawrzeć dowolny,
poprawny składniowo kod PHP, włącznie z definicjami innych
funkcji i klas.Wywołanie funkcji polega na podaniu jej nazwy
zakończonej nawiasem okrągłym; jeśli mają być przekazane
argumenty,należy je umieścić w tym nawiasie:
na zi.1a_funkaji ( argumen ty) ;
np.:Za pomocą instrukcji return funkcja może(ale nie musi)
zwracać wynik dowolnego typu, np.:Argumenty funkcji
Funkcja może mieć dowolną liczbę argumentów, oddzie
lonych od siebie znakiem przecinka. Argumenty mogą być
przekazywane:
• przez wartość,
• przez referencję,
Domyślnie przekazywanie odbywa się przez wartość.
Przekazywanie przezwartość
W ciele funkcji jest dostęp tylko do kopii przekazywanych
danychi ich ewentualna modyfikacjanie ma wpływu na stan
zmiennych poza funkcją.Przekazywanie przez referencję
Aby przekazać argument przez referencję(i mieć możliwość
modyfikacji wewnątrz funkcji oryginalnych danych), należy
poprzedzić go znakiem & (ampersand), czyli:
function furrkcja ( & argumen t ) { I / treść
'+funkcj i ) ;
Przykładowo:Domyślne wartości argumentów
Argumenty domyślne definiowane są następująco:
function na :-iva ( $ a .rgumen t = t·1a r l o.ść) {
I / t resć funkcj i
Wartość domyślna musi być wyrażeniem stałym(ang. con
stant expression), niemoże więcto byćnp. zmienna.Należy
równieżpamiętać,żetrzeba podaćwszystkiedomyślneargu
menty z prawej strony listy argumentów przed wszystkimi
argumentamizwykłymi.
function show ( $ argl , $arg2 = " s tr2 " /
'-'"$arg3 � " str3 " I I
echo ( $arg l . " " . $arg2 . " " . $aJ.·g3 )
Zmienna lista argumentów
Do obsługi zmiennej listy argumentów wykorzystywane
sątrzy funkcje:
• func num args-zwraca liczbę argumentów
funkcji;
-
• func_ge t_arg-zwraca argument o podanym
numerze;
• func get args-zwraca listę argumentów
w postacita6licy.
Wykorzystanie func_num_args i func_get_arg:< ?php
funct ion func{) {
I
$val = n n ;
$ count = func_ num args ( ) ;
for ( $i � O ; $ i < $count; $i++) I
$ va'I. . = func_get_a rg ($i l;
I
return $ va l ;
$ s t r = fu11c ( 11 To " , " j est "
echo $str ;
?>Wykorzystanie func_get_args:Zasięg zmiennych
Zmienne globalne
Zmienna globalna,czyli zadeklarowana w skrypcie poza cia
łem funkcji lub klasy, jest dostępna bezpośrednio w każdym
miejscu skryptu poza wnętrzami funkcji. Aby w funkcji uzy
skać dostęp do zmiennych o zasięgu globalnym, należy użyć
słowa kluczowego g lobal:
global $::mienna l , $zmi.erma.:', ... , $zmi ennaN;
np.:< ?php
$liczba = 1 0 0 ;
function func { )
I
I
global $lic zba;
echo $ l i c=ba ;
func ( ) ;
? >Drugą możliwością jest skorzystanie z tablicy $GLOBALS,
która zawiera odwołania do wszystkich zmiennych global
nych skryptu:
$GLOBALS [ ' na21·1a zmi enn j ' ]
np.:
-Zmienne lokalne
Zasięg zmiennych lokalnych jest ograniczony wyłącznie do
wnętrza funkcji, w której zostały zdefiniowane. Odwołania
w innym miejscu skryptu nie są możliwe.
Zmienne statyczne
Zmienne statyczne funkcji zachowują swoją wartość pomię
dzy jej wywołaniami.W deklaracji używa się słowa stat i e:
s tatic $ młz1va zmi en n ej = h'a .rtość;
Pierwsze wywołanie fU";ikcji tworzy zmienną statyczną i przy
pisuje jej pierwotną wartość.Wartość może być modyfikowa
na. Pomiędzy wywołaniami pamiętana jest ostatnia wartość
zmiennej, np.:)
public
public
function show ( )
I
$this->imi e " ) ;
$ this->nazwi s ko" ) ;
Należy zwrócić uwagę na sposób odwołania do pól klasy
w metodzie s how. Koniecznejestużycie wskazania $ t h i s,
które informuje, że są to odwołania do zmiennych zdefinio
wanych w klasie, a nie do zmiennych o takich samych na
zwach zdefiniowanych wfunkcji show.
Specyfikatory dostępu
Składowe klasy muszą mieć określony sposób dostępu, który
definiuje się przy użyciu specyfikatorów dostępu nazy
wanych również modyfikatorami dostępu(ang. access
modifiers). Sąto:
• pub l i c - dostęp publiczny(dostępjest nieograni
czony, można się do nich dowolnie odwoływać);
• protected-dostępchroniony(dostęp jest
ograniczony do klasy, w której sązdefiniowane, oraz do
klas bazowych i pochodnych);
• private -dostęp prywatny(dostęp jest ograniczo-
ny tylko do klasy, w której są zdefiniowane).
Modyfikator musi wystąpić przed nazwą pola, nie musi nato
miast przed nazwą metody(jest ona wtedy traktowana tak,
jakbyznajdowało sięprzednią słowopublic).
Tworzenie obiektów
Obiekt danej klasy tworzony jest za pomocą operatora new
w postaci:
$ zm.i enna = new na .:: 1va_kla :;;:y ( ) ;
$osoba � new Osoba I I ;
Odwołania do składowych
Aby odwołać się do dowolnej składowej klasy, należy użyć
operatora ->. Dla pól:
$naz1va obi ekt u->{Ją �r·:a p.;Jl -..,;
Dla metod: -
-
$ n a!n1a �bie:: t u- > ;1 a :::·:a me:r..::Jdy ( ar:gumt:!n -
'+ty metody) ;
-
Przykład-;< ?php
class Osoba
)
pub l i c $ imie;
publ ic $nazwis ko ;
funct ibn show ( )
I
$osoba l � new Osoba ( I ;
$ osobal ->imie = "Andrzej " ;
$osoba l->nazwisko = 11 Is h0\·I ( I ;
?>Dziedziczenie
cl-ass Punkt
I
)
public $wsp„ ;
public $wąp- Y ;
cl ass KolorowyPunkt exte cis
public $kall.or ;
Konstruktory i destruktory
Definicja konstruktora polega na umieszczeniu wkodziekla-
sy metody o nazwie cons truct, schematycznie
class na z 11a_k1.asy
I
function construct ( )
I/t reść konstruktora
)
I/po zostałe s kładO\;e kla�y
- - - - - - - - - - - - - - - - -
Ciąg dalszy na stronie5 -ł
Tablice informatyczne. P H P 5
Konstruktor jest wykonywany zawsze podczas tworzenia
obiektów danej klasy.
Należy zwrócić uwagę, że w przypadku dziedziczenia kon
struktor klasy bazowej nie jest wywoływany automatycznie.
Jeśli zachodzi potrzeba, aby został on wykonany,należy go
wywołać za pomocą konstrukcji:
parent : construct ( )
np.:X ( ) ;
$zmB->X I ) ;
? >Składowe statyczne
Składowe statyczne istniejąnawetwtedy,kiedynie ma żadnego
obiektu danej klasy i są współdzielone przez wszystkie obiekty
danej klasy. Do deklaracji używa się słowa static. Dla pól:
specyfi ka t.or_dostępu static $ naz1·1a_aola ;
Dla metod:
specyfikato r do=bępu sta tie function
4-naZh'.J metody(5!.,Kgume t r) ;
Dostęp do składowych statycznych uzyskuje się następująco:
nazwa klasy : : nazwa pola
na z1va-kla sy : : naz11a-m0 tody ( ar9umenty )
Przykład uŻycia:
-< ?php
class Test
I
)
public s tatic $ liczba ;
public s tat ic function f I )
I
echo ' funk.ej a f ' ;
Test : : $l i c zba = 100;
echo Test : : $l i czba , " \ n" ;
Test: : f () ;
? >Wyjątki
Zgłaszanie wyjątków
Do zgłaszania wyjątków służy instrukcja throw, po której
należy umieścić obiekt wyjątku, schematycznie:
throw 1vj:.j a tek;
Obiekt wyjątku powinien być typu (klasy) Exception lub
dowolnego typu pochodnego od Exception, np.:
thrm-1 new Exception ( ) ;
lub:
$e = new Exception ( ) ;
throw $e;
Konstruktor klasy Exception ma następującą deklarację:
public construct ( [ s tring message = " " (,
"+int code = O ( , Exception previous =
""'NOLL] L J )
Dostępne są następujące metody:
• getMessage-zwraca komunikat powiązany
z danym wyjątkiem (dostępna od PHP 5.1.0);
• getPrevious-zwraca obiekt poprzedniego
wyjątku (dostępna od PHP 5.3.0);
• getCode-zwraca kod powiązany z danym wyjąt
kiem(dostępna od PHP 5.1.0);
• getFile-zwraca nazwę w pliku, w którym wystąpił
dany wyjątek (dostępna od PHP 5.1.0);
• getLine-zwraca numer linii kodu, w której wystąpił
dany wyjątek (dostępna od PHP 5.1.0);
• getTrace -zwraca tablicę z informacjami o wyjątku
i miejscu jego wystąpienia(tzw. stack trace; dostępna
od PHP 5.1.0);
• get TraceAs string -zwraca informacje
o wyjątku i miejscujego wystąpienia(tzw. stack trace)
w postaci ciągu znaków (dostępna od PHP 5.1.0).
Przechwytywanie wyjątków
Wyjątki przechwytuje się za pomocą instrukcji t ry„.catch:
try {
//instrukcje mogące spm·10dować
'+wyj ątek
)
catch ( typfvyj ą tku ob i ektf'lyj ą t ku ) {
I I kod obs ługi blędu
Liczba bloków catch niejest ograniczona.
RÓŻNE WŁAŚCIWOŚCI '
Zmienne superglobalne
Zmienna
$GLOBALS
$ SERVER
$__GET
$ POST
$ COOKIE
$_FI LES
$_ENV
$ REQOEST
$ SESS ION
$php_errormsg
$HTTP RAW POST DATA
$http_response_header
$ argc
$argv
Znaczenie
Tablica zawierająca odniesienia do zmiennych o zasięgu globalnym. Kluczami są nazwy,
a wartościami kluczy-wartościzmiennych.
Tablica zawierająca informacje ustawiane przez serwerWWW.
Tablica zdanymiprzekazanymi do serwera WWW za pomocąmetodyGET.
Tablica z danymi przekazanymi do serwera WWW za pomocąmetody POST.
Tablicazawierająca cookies przekazane z serwera WWW.
Tablica zawierająca elementy przekazane do skryptu za pomocą metody POST podczas
przesyłania plików do serwera.
Tablicazawierająca wartości zmiennych środowiskowych przekazanych z systemu,
na którym działa PHP.
Tablica asocjacyjna zawierająca dane z $ GET,$ POST i $ COOKIE.
Tablica asocjacyjna z danymizwiązanymi z bieżącąsesją.
Zmienna zawierająca tekst poprzedniego komunikatu o błędzie. Dostępna tylko wtedy, gdy
w plikukonfiguracyjnymphp.iniopcja t rac k er rors zostałaustawiona na On(włączona).
Zmienna zawierająca nieprzetworzone dane przesłane do skryptu za pomocąmetody POST.
Tablica zawierająca nagłówki protokołu HTIP przesłane przez serwer w odpowiedzi
na otrzymane żądanie(odwołanie).
Zawiera liczbę argumentów przekazanych do interpretera PHP, gdy skrypt jest wywoływany
z wiersza poleceń. Pierwszym argumentemjest nazwa pliku zawierającego skrypt. Zmienna
jest dostępna, jeśli w pliku konfiguracyjnym php.ini została włączona opcja regi s ter_
Tablica argumentów przekazanych do interpretera PHP,gdy skryptzostał wywołany z wiersza
poleceń. Pierwszym elementem tablicy ($argv [ o ] ) jest nazwa pliku ze skryptem. Zmienna
jest dostępna, jeśli w pliku konfiguracyjnym php.ini została włączona opcja register_
Przetwarzanie fo_r_"!lula�zy Metoda POST
Metoda GET
W przypadku metody GET dane z formularza przekazywane
są jawnie,w adresie URL, który ma wtedy postać: http : / /
adre s . s e rwe ra I s k ryp t . php? zmie n n a l =war
tośćl & zmienna2=wartość2. Dane będą dostępne dla
skryptu w globalnej tablicy $ GET. Kluczami tej tablicy są
nazwy elementów formularza,a wartościami wskazywanymi
przez klucze - odpowiadające im dane. Przykład odczytu
tablicy $_GET:< ?php
foreach ( $ GET as $ key => $val) {
print ( "$key : $val " ) ;
}
? >Informacje przesyłane do serwera nie są widoczne dla użyt
kownika, można też przesłać w ten sposób większą ich ilość.
Dane będą dostępne dla skryptu w globalnej tablicy $
POST. Kluczami tej tablicy są nazwy elementów formularza;
a wartościami wskazywanymi przezklucze- odpowiadające
im dane. Przykład odczytu tablicy $_POST: $val) I
print ( "$key : $val " ) ;
? >Odczyt pliku
Do otwarcia pliku służy funkcja fopen, do zamknięcia-
fclose, a do odczytu danych-fread. Funkcja fread
odczytuje dane z pliku wskazywanego przez jej pierwszy
argument (deskryptorzwrócony przez fopen):
string fread {resource handle, int length)
Odczytywana jest liczba bajtów wskazywana przez pa
rametr length, chyba że podczas odczytu zostanie
osiągnięty koniec pliku. W takim przypadku czytanie jest
przerywane i zwracana jest zawartość odczytana do tego
miejsca. Zawartość pliku jest zwracana w postaci zmiennej
typu string, czyli w postaci łańcucha znaków.Funkcja feof zwraca wartość true,jeśli został osiągnięty
koniec pliku lub wystąpił błąd,natomiast wartość false
-w każdym innym przypadku. Aby odczytać naraz całą za
wartość pliku (zamiastpętli while), można użyć instrukcji:
$ s tr = fread ( $ fd, filesize
'+ { $ fi lename ) ) ;
lub funkcji file_ge t_contents:
$ str = file get contents ( "naz\·Ja pli-
'+ku") ; - - -
Funkcja f i l e s i ze zwraca rozmiar pliku w bajtach.
Zapis pliku
Zapis do pliku odbywa się za pomocą funkcji fwri te (lub
jej aliasu fputs). Deklaracjajest następująca:
int fwrite ( re source handle, string
'+str [ , int length } )
Argument h andle jest to identyfikator pliku zwrócony
przez fopen, s t r to dane, które mają zostać zapisane.
Parametr length jest opcjonalny i określa, ile bajtów ma
zostać zapisanych. Jeżeli nie zostanie podany, zapisane
zostaną wszystkie dane zawarte w s tr. Przy zapisywaniu
plików należy zwrócić szczególną uwagę na tryb otwarcia,
użyty w funkcji fopen. W szczególności należy pamiętać,
żetryb w+ usuwa wszystkie dane w otwieranym pliku, nato
miast tryb r+ powoduje zapis na początku pliku,ale nadpi
sujeznajdujące się tam dane.Argumenty funkcji fopen
Deklaracja: resource fopen ( s tring file-
name , s tring made [ , bool use include
path [ , resource context ] ] I
-
W zależności od tego, w jakiej postaci zostanie podany
argument fi lename, zostanie otwarte połączenie HTIP,
FTP, jeden ze standardowych strumieni lub plik w systemie
plików serwera.
1. Jeśli fi lename zaczyna się od ciągu s chema : I /,
PHP zakłada,że schema oznacza jeden z zarejestro
wanych protokołów (np. HTIP, FTP itp.) i poszukuje
odpowiedniej procedury obsługi.Jeżelitaka procedura
nie zostanie odnaleziona (podane zostało odwołanie
Znacznik Opis
Wskaźnik am lub pm
A Wskaźnik AM lub PM
Czas internetowy w formacie Swatch
Data w formacie IS0-8601 (dostępny od PHP 5)
do nieobsługiwanego protokołu),wygenerowana zo
stanie nota informacyjna(ang. notice), a skrypt będzie
kontynuował działanie tak, jakby fi 1 en ame wskazy
wał plik lokalny.
2. Jeśli filename wskazuje plik lokalny(lub PHP założy,
że tak jest),otwierany jest strumień powiązany z tym
plikiem. Należy się upewnić, że prawa dostępu są usta
wione tak,iżpozwalają aparatowi wykonawczemu PHP
na odwołanie się do pliku.
3. Jeśli fi lename zaczyna się od php : I Is tdin,
php : / / s tdout lub php : / / s tderr, zostanie
otworzony odpowiedni strumień.
4. Jeżeli fi lename wskazuje jeden z protokołów sie
ciowych, PHP sprawdza najpierw, czy jest włączona
opcja konfiguracyjna a l low url fopen. Jeśli nie
jest, generowane jest ostrzeżenie, awywołanie fopen
kończy się niepowodzeniem.
Jeżeli otwarcie wskazanego pliku lub adresu URL się nie
powiedzie, zostanie zwrócona wartość fal s e. Parametr
mode może przyjmowaćjedną z następujących wartości:
• ' r ' -otwarcie tylko do odczytu, wskaźnik pliku
zostanie ustawiony na jego początku.
• ' r+ ' -otwarcie do odczytu izapisu, wskaźnik pliku
zostanie ustawiony na jego początku.
• ' w ' -otwarcie tylko do zapisu,wskaźnik pliku jest
ustawiony na jego początku,długość pliku jest obcina
na do zera. Jeśli plik nie istnieje, następuje próbajego
utworzenia.
• ' w+ ' -otwarcie do zapisu i odczytu, wskaźnik pliku
jest ustawiony na jego początku,długość plikujest
obcinana do zera. Jeśli plik nie istnieje,następuje
próbajego utworzenia.
• ' a ' -otwarcietylko do zapisu,wskaźnik pliku
jest ustawiony na jego końcu. Jeśli plik nie istnieje,
następuje próba jego utworzenia.
• ' a+ ' -otwarcie do zapisu i odczytu,wskaźnik pliku
jest ustawiony najego końcu. Jeśli plik nie istnieje,
następuje próba jego utworzenia.
• ' x ' -utworzenie i otwarcie pliku tylko do zapisu,
wskaźnik pliku jest ustawiony najego początku. Jeśli
plik istnieje,zwracana jest wartość fa1 s e i genero
wane jest ostrzeżenie.
• ' x+ ' -utworzenie i otwarcie pliku do odczytu
izapisu, wskaźnik pliku jest ustawiony najego począt
ku. Jeśli plik istnieje, zwracana jest wartość fa 1s e
i generowane jest ostrzeżenie.
• c-otwiera plik w trybie tylko do zapisu. Jeżeli plik nie
istnieje,zostanieutworzony,jeśliistnieje,wskaźnik po
zycjizostanie umieszczony na początku-zawartość
pliku niejest tracona. Opcja dostępna od PHP 5.2.6.
• c+-otwiera plik w trybie do zapisu i odczytu.Jeżeli
plik nie istnieje, zostanie utworzony,jeśli istnieje,
wskaźnik pozycji zostanie umieszczony na początku
-zawartość pliku niejest tracona. Opcja dostępna od
PHP 5.2.6.
Parametr tryb możerównieżzawierać opcjonalnąliteręb,
np.: rb, r+b.Wskazujeona,żeplikma byćotwarty wtrybie
binarnym, a nie tekstowym, i jest użyteczny w systemach,
które dokonują takiego rozróżnienia (np. Windows). Jeśli
system nie dokonuje takiego rozróżnienia,parametr b zo
stanie zignorowany. Począwszy od PHP 4.3.2, tryb binarny
jest trybem domyślnym. Przełączenie w tryb tekstowy od
bywa się przezużycielitery t, np.: wt, w+t.
Dat� i cz�s
Poniżej przedstawiono wybrane funkcje operujące na dacie
i czasie.
Funkcja checkdate(dostępna od PHP 3)
Deklaracja: bool checkdate ( in t month , int
day , int yea r )
Zwraca true, jeżeli podane jako parametry wartości two
rzą poprawną datę dla kalendarza gregoriańskiego.W prze
ciwnym przypadku zwraca wartość false.
Funkcja date (dostępna od PHP 3)
Deklaracja: s tring date ( string format [ ,
int t imes tamp ] )
Zwraca ciąg znaków, sformatowany zgodnie z szablonem
podanym jako parametr format. Jeżeli zostanie podany
parametr t i mestamp, zostanie zwrócona odpowiadająca
mu data. Jeżeli parametr ten zostanie pominięty, będzie
zastosowany bieżący czas lokalny. Szablon format może
zawierać znaczniki formatujące:
Przykładowe wartości
am, pm
AM,PM
od OOO do 999
2009-03-16T17:29:51+00:00
d Dzień miesiąca w formacie dwucyfrowym z zerem na początku od 01 do 31
M
Dzień miesiąca w formie skrótu trzyliterowego
Identyfikator strefy czasowej (dostępny od PHP 5.1.0)
Pełna nazwa miesiąca
Godzina w formacie 12-godzinnymbezzera na początku
Godzina w formacie 24-godzinnym bez zera na początku
Godzina w formacie 12-godzinnym z zerem na początku
Godzina w formacie 24-godzinnymz zerem na początku
Minuty z zerem na początku
Znacznik czasu zimowego (1) i letniego (O)
Dzień miesiąca bez zera na początku
Dzień miesiąca w postacitekstowej
Znacznik roku przestępnego
Miesiąc w postaci dwucyfrowej z zerem na początku
Miesiąc w postaci trzyliterowej
Miesiąc w postaci liczbowej bez zera na początku
Numer dnia w tygodniu, zgodny z formatem IS0-8601
(dostępny od PHP 5.1.0)
Rok zgodny z IS0-8601(dostępny od PHP 5.1.0)
od„Mon"do„Sun"
GMT,UTC
od„January"do„December"
od 1 do12
od O do 23
od 01 do 12
od OO do 23
od OO do 59
O lub 1
od 1 do31
od„Monday''do„Sunday'
1 oznacza rokprzestępny
od Ol do12
od„Jan"do„Dec"
od 1 do 12
od 1(ponledziałek) do 7 (niedziela)
1998, 2010
Różnica w stosunku do czasu Greenwich „+0200'
Data formatowana zgodnie ze standardem opisanym w rfc2822 ,Wed,21 Dec 201O 18:21:17 +0200"
Liczba sekundz zerem na początku od OO do 59
Tablice informatyczne. PHP 5
Znacznik Opis Przykładowe wartości
Przyrostek literowy dla liaby określającej dzień tygodnia
(dla języka angielskiego)
"st", "nd", "rd" lub "th"
Liaba dni w danym miesiącu
Skrót określający strefę aasową
Liaba milisekund(dostępny od PHP 5.2.2)
Znaanik aasu Uniksa
Dzień tygodnia w postaci numerycznej
od 28 do 31
EST.MOT
46892
liaba sekund, która upłynęła od 1 styania
1970 00:00:00 GMT
od O(niedziela) do 6(sobota)
w Numer tygodnia w roku zgodnie ze standardem IS0-8601
(dostępny od PHP 4.1.0)
od1 do 52
Rok w postaci dwucyfrowej np. 98, 10
Rok w postaci aterocyfrowej np. 1998, 201O
Numer kolejnego dnia w roku, numeracja od O od O do365
Przesunięcie strefy aasowej w sekundach od -43200 do 50400
Funkcja getdate(dostępna od PHP 3)
Deklaracja: array getdate ( [ int timestamp } )
Zwraca tablicę zawierającą dane określające bieżącą datę i aas lub też, kiedy podany zostanie parametr t imes tamp -datę
i aas, określone przez ten parametr. Zwrócona tablica zawiera następujące kluae:
Klucz
seconds
minutes
hours
mday
wday
year
yday
weekday
month
Znaczenie
Liaba sekund
Liabaminut
Godzina
Dzień miesiąca
Dzień tygodnia w postaci numeryanej,
O oznaaa niedzielę
Miesiąc w postaci liabowej
Rok w postaci liabowej(aterocyfrowej)
Numer kolejnego dnia w roku
Dzień tygodnia w postacitekstowej
Nazwa miesiąca w postacitekstowej
Znacznik aasu Uniksa
Funkcja gettimeofday(dostępna od PHP 3.0.7)
Deklaracja: mixed gettimeofday ( [bool
turn float } )
Zwracatablicę zawierającą dane dotyaące bieżącego aasu.
Kluaamitablicy są:
Klucz Znaczenie
Sekundy
Mikrosekundy
minuteswest Minuty na zachód od Greenwich
dsttime Rodzaj aasu(letni lub zimowy)
Jeżeli opcjonalny parametr return float (dostępny
od PHP 5.1.0) zostanie ustawiony na true (domyślnie jest
równy false), zamiast tablicy zwrócona zostanie wartość
typu float.
Funkcja gmdate(dostępna od PHP 3)
Deklaracja: s tring gmdate ( s tring format [ ,
int timestamp } )
Zwraca ciąg znaków sformatowany zgodnie z szablonem
podanym jako argument format. Jeżeli zostanie podany
argument times tamp, zostanie zwrócona odpowiadająca
mudata.Jeśli parametrten zostaniepominięty,zostanie użyty
aasbieżący. Zawsze zwracany jest aas w formacie GMT (ang.
Greenwich Mean Time). Szablon format może zawierać
znaaniki formatujące podane w opisie funkcji date.
Funkcja gmmktime(dostępna od PHP 3)
Deklaracja: int gmmktime ( [ int hour [ , int
minute [ , int second [ , int month [ , int
day [, int year [, int i s ds t } J JJJ ] ] )
Działanie jest identyczne jak funkcji ,;;it ime, z tą różnicą,
żeparametry reprezentują czas GMT.
Funkcja gmstrftime(dostępna od PHP 3.0.12)
Deklaracja: string gms tr ft ime ( s tri ng format
[ , int times tamp ] )
Dzialanie jest analogianie do strftime, z tą różnicą,
że zwracany jest aas GMT.
Funkcja idate(dostępna od PHP 5)
Deklaracja: int idate ( s tring format [ , int
timestamp J )
Zwraca wartość typu integer, określającą datę lub aas,
sformatowaną zgodnie z parametrem format. Parametrten
może przyjmować jedną z wartości: B, d, h, H, i, I, L, m, s, t,
u, w, w, y, Y, z, z. Ich znaaenie jest zgodne z tym podanym
przy opisie funkcji dat e.
Funkcja localtime(dostępna od PHP 4)
Deklaracja: array loca l time ( [ int t ime s tamp
[ , bool is as soc i a tive ] ] )
Zwraca tablicę z zawartością identyaną jak struktura zwra
cana po wywołaniu funkcji localtime w C. Pierwszym
argumentem jest znaanik aasu time s tamp. Jeżeli nie zo
stanie on podany, będzie uwzględniony bieżący aas lokalny.
Ustawienie argumentu is associative na false łub
niepodanie go powoduje zwrócenie zwykłej tablicy indekso·
wanej łiabowo. Po ustawieniu argumentu is_associa-
Znacznik Opis
% a Nazwa dniatygodnia wpostaci skróconej
%A Pełna nazwa dniatygodnia
%b Nazwa miesiąca wpostaci skróconej
%B Pełna nazwa miesiąca
Przykładowe wartości
od O do 5 9
od o do 5 9
od o do 23
od 1 do 31
od o(niedziela) do 6(sobota)
od 1 do 12
1995, 2015
od o do 3 65
Sunday,Monday
January, February
zazwyczajod -2 1 474 83648 do 214 7 483647
tive na t rue zwracana jest tablica asocjacyjna o następu
jących kluczach:
Klucz Znaczenie
tm sec Liaba sekund
tm min Liabaminut
tm_hour Godzina
tm_mday Dzień miesiąca w postaci liabowej
tm mon Miesiąc w roku w postaci liabowej
tm year Liaba lat, które upłynęły od roku 1900
tm wday Dzień tygodnia
tm yday Dzieńroku
tm_isdst Znaanik aasu letniego i zimowego
Funkcja microtime(dostępna od PHP 3)
DeklaraCJa:mixed microt1me ( [bool get a s
float } )
Zwraca uniksowy znacznik aasu, podając liabę sekund i mi
krosekund, które upłynęły od 1 stycznia 1970 roku od godziny
0:00:00 aasu Greenwich. Jeżeli opcjonalny parametr get
as float (dostępny od PHP 5) zostanie pominięty luli
będzie miał wartość fals e, zwracany ciąg będzie miał po
stać msec s ec, gdzie msec oznaaa mikrosekundy, a sec
-sekundy. Jeżeli ten argument będzie miał wartość true,
zostanie zwrócona wartość typu float. Funkcja działa tylko
na platformach obsługujących wywołanie funkcji systemowej
gettimeofday.
Funkcja mktime(dostępna od PHP 3)
Deklaracja: int mktime ( [ int hour [ , int minu
te [ , int second [, int month [ , int day
[, int year [ , int i s ds t } ] } } ] } } )
Zwraca uniksowy znaanik aasu
-
dla podanych argumentów.
Część parametrów(bądż wszystkie) można pominąć, pod wa
runkiem żeodbywasięto odprawejdolewej strony.Brakujące
danezostanązastąpionezgodniezbieżącym aasemlokalnym.
Parametropcjonalny is dst (odPHP 5.1.0ma on status de
precated) przyjmujewartość 1 dla aasu zimowego, o dla
aasuletniego łub - 1, jeżeli typ aasu nie jest znany.
Argument ye ar może być podawany w postaci dwu- łub
aterocyfrowej. W pierwszym przypadku wartości od O do
69 są przekładane na lata 2000 - 2069, natomiast wartości
70 - 99 na lata 1970 - 1999. Ostatni dzień miesiąca może być
wyrażony jako zerowy dzień następnego.
Funkcja strftime(dostępna od PHP 3)
Deklaracja: s tring s tr ftime ( s tring format [ ,
int times tamp } )
Zwraca ciąg znaków, sformatowany zgodnie z szablonem
podanym w argumencie format. Jeżeli zostanie podany
argument times tamp, zostanie zwrócony odpowiadający
mu aas. Jeśli parametr ten będzie pominięty, zostanie uży
ty bieżący aas lokalny. Nazwy miesięcy oraz dni tygodnia,
a także inne parametry związane z ustawieniami lokalnymi
będą zgodne z danymi lokalizacyjnymi ustawionymi funkcją
s etlocale. W szablonie formatującym można używać
znaaników przedstawionych w poniższej tabeli.
% c Data i aas w formaciezgodnym z ustawieniami lokalnymi
% C Wiek(rokpodzielonyprzez sto i obciętydo liaby całkowitej, zakres od OO do 99)
%d Dzieńmiesiąca wpostaci numeryanej, zakres od Ol do 31
%D Znaaenie identyane jak %m/ %dl%y
% e Dzieńmiesiąca wpostaci numeryanej, liabyjednocyfrowepoprzedzane sąspacją
% F Znaaenie identyane z % Y-%m-%d
%g Znaaenie takiejak %G, bez uwzględnienia wieku
% G Czterocyfrowy rok(z uwzględnieniem numeru tygodnia wg standardu ISO)
Znacznik Opis
%11 Znaaenie takie samojak %b
%H Godzina w formacie 24-godzinnym
U Godzina w formacie 12-godzinnym
%j Dzień w roku, zakres od 001 do 366
Godzina w formacie dwunastogodzinnym ze spacjąpoprzedzającąpojedyncze cyfry
%m Miesiąc wpostaci numeryanej
%M Liczbaminut
% n Znaanik nowej linii
%p Znaanikprzedpołudniem-popołudniu(wielkimi literami)
% P Znaanikprzedpołudniem-popołudniu(małymi literami)
% r
%R
%5
%T
Znaaenie identyane z % I : %M : % 5 %p
Znaaenie identyane z %H : %M
Liaba sekund w formacie dwucyfrowym
Znaktabulac"i
Bieżący aas, odpowiednik %H : %M : %5
%u Numer dnia tygodnia, 1 oznaaaponiedziałek, 7-niedzielę
w Numertygodnia w roku, poaynając odpierwszej niedzieli jakopierwszego dniapierwszego tygodnia
%V Numertygodnia w roku zgodnie ze standardemISOB601:1998
Dzień tygodnia, o oznaaa niedzielę, 6-sobotę
%W Numertygodnia w roku,poaynając od pierwszegoponiedziałku jakopierwszego dniapierwszego tygodnia
%x Reprezentacja daty(bez aasu), zgodna z bieżącymi ustawieniami lokalnymi
%X Reprezentacja aasu(bez daty), zgodna z bieżącymi ustawieniami lokalnymi
%y Rok wpostaci dwucyfrowej(bez oznaaenia wieku)
%Y Rok wpostaci aterocyfrowej(z oznaaeniem wieku)
% z
Przesunięcie dla bieżącej strefy aasowej lub skrót nazwy strefy aasowej(zależnieo dsystemu operacyjnego,
na którym działa PHP)
% Z Określenie strefyaasowejniezwracaneprzez znacznik %z
% % Znak%
Funkcja strtotime(dostępna od PHP 3.0.12)
Deklaracja: int strtotime ( s tring $ t ime [ ,
int $now ] )
Dokonuje konwersji ciągu znaków opisującego datę i czas na
uniksowy znacznik aasu. Parametr t ime powinien zawierać
datę w jednym z angielskich formatów zgodnych ze składnią
GNU. Poprawne są m.in. przykładowe wywołania:
s trtotime ( " now " ) r " \n " ;
strtotime ( " lO September 201 4 11 ) , " \n " ;
s trtotime ( " + l day" ) , " \n " ;
strto time ( " + l week " ) , " \n" ;
strtotime ( " + l wee k :. days 4 hours
42 seconds " ) , " \n" ;
strtotime ( "next Thursday" ) , " \n " ;
s trtotime ( " last Mond@:_y" ) , " \n " ;
Jeśli nie można dokonać konwersji, funkcja zwraca wartość
fa lse(w wersjach poniżej 5.1.0 zwracana jest wartość - 1).
Funkcja time(dostępna od PHP 3)
Deklaracja: int t ime ( void)
Zwraca uniksowy znaanik czasu.
Odbieranie i wysyłanie plików
Odebranie pliku wysłanego do serwera
Plik po odebraniu przez serwer jest zapisywany pod tymaa
sową nazwą w katalogu zdefiniowanym w opcjachkonfigura·
cyjnych. Dane dotyaące jego nazwy, wielkości itp. znajdują
się w globalnej tablicy $_FILES (plik identyfikowany jest
przez nazwę pola input typu file z formularza WWW).
Istnieje dostęp do następujących informacji:
• $ FI LES [ ' na zwa pola ' ] [ ' name ' }
--=-oryginalna nazwa Pliku,
• $ FI LES [ ' nazwa pol a ' J [ ' type ' J
-=-typMIME(np. image/jpeg),
• $ FILES [ ' nazwa pola ' } [ ' s i ze ' }
....:-wielkość pliku w bajtach,
• $ FILES [ ' nazwa pol a ' J [ ' tmp name ' J
--=-tymaasowa nazwapliku,
-
• $ FILES [ ' na zwa pol a ' ] [ ' error ' ]
--=-kod błędu(status operacji).
Do przeniesienia odebranegoplikuz katalogu tymaasowego
do docelowej lokalizacji należy użyć funkcji o nazwie move
uploaded_file. Pierwszym jej argumentem jest nazwa
pliku źródłowego(ayli nazwa tymaasowa pliku), drugim-
nazwa pliku docelowego. Funkcja ta zwraca wartość true,
jeżeli operacja zakończyła się sukcesem, lub wartość false
w przeciwnym przypadku.
$uploaddir = ' /upload/ ' ;
if (move_uploaded_f ile ( $_FI LES [ ' pli k ' J
4 { ' tmp name ' 1 ,
$uploaddir . $ FILES ( ' plik ' J ( ' name ' J ) ) I
echo ( " Plik :Ostał załadowany . " ) ;
)
else (
echo ( " Plik nie �os tał za l u doh'any 11 ) ;
Wysłanie pliku z serwera do przeglądarki
Procedura postępowania jestnastępująca:
1. Otwarcie żądanego pliku za pomocądostępnych
funkcji.
2. Odayt i zapamiętanie jego rozmiaru oraz zawartości.
3. Zamknięcie pliku.
4. Wysłanie do przeglądarki trzech nagłówków HTTP:
heade.r ( "Con tent-Type : application/
1..+octet-stream" ) ;
header ( "Content-Length : rozmiar
��
0
a
1
di��u/,.'�;ntent-Disposi tion :
-
4at.tachment ; filename=nazwa E1j.ku " ) ;
5. Wysłanie do przeglądarki zapamiętane]zawartości pliku.
Przykład:Sesje
Identyfikator sesji
Każda sesja użytkownika ma przypisany własny, unikatowy
identyfikator. Jest to losowa liaba generowana przez PHP,
przechowywana na serwerze i w komputerze użytkownika.
W tym drugim przypadku najczęściej w cookies. Jeżeli jed
nak przeglądarka użytkownika nie akceptuje cookies lub jeśli
autor witryny nie żyay sobie przechowywania identyfikatora
w plikach tegotypu, identyfikator może być dodawany do ad
resu URL (jeśli w opcjach konfiguracyjnych została włąaona
opcja us e_trans_id).
Rozpoczynanie sesji
Sesja może być rozpoaęta przez wywołanie funkcji ses
si on_start, np.:
sess ion start ( ) ;
Kiedy sesja wykorzystujecookies,ta funkcja musi być wywoła
na, zanim jakiekolwiek dane zostaną wysłane do przeglądarki
(chyba że włączonezostało buforowanie wyjścia).
Sesja może być rozpoczynana automatyanie podczas wywo
ływania każdego skryptu, o ile w pliku php.ini zmienna konfi·
guracyjna s e ssion . auto start została ustawiona na 1
(wartością domyślną jest o).
-
Kończenie sesji
W celu zakońaenia sesji należy wywołać funkcję session
des troy. Usuwa ona zasoby powiązane z sesją, nie usuwa
jednak zarejestrowanych zmiennych ani cookie zapisanego
na komputerze użytkownika. Te czynności należy wykonać
we własnym zakresie.
Zmienne sesji
Tworzenie zmiennych
Zmienne sesji są zapisywane w globalnej tablicy o nazwie
$_SESSION. Aby zapisać(zarejestrować) zmienną w sesji,
należy skorzystać z konstrukcji:
$ SESSION [ • nazi..ra zmi enn,;.j ' ] = ivartosC;
Aby�daytać wartość zmi�nnej,trzebaodwołaćsię doindek·
su wskazującegojej nazwę:
$ zmienna = $ SESSION [ ' nazwa zmiennej ' ] ;
Gdy trzeba sprawdzić,ay istnieje dana zm;nnasesji,stosuje
się typową funkcję i ss et w postaci:
i sset ( $_SESSION [ ' na =i;a_ =mi enn� ) )
Jeśli zwróconą wartością będzie true, oznaaa to, że zmien
na jestzarejestrowana,a jeśli false-że nie jest.
Usuwanie zmiennych
Zmienne, które zostały zarejestrowane w sesji, trzeba przed
jej zakońaeniem wyrejestrować. Należy skorzystać z funkcji
unset w schematyanej postaci:
unset ( $_SESSION [ ' na .:1.;a_ zm.i enne i...'..J )
Nastąpiwtedy wyrejestrowanie zsesjioraz usunięciezmiennej.
Konfiguracja sesji
Na zachowanie sesji można wpływać, modyfikując wartości
opcji znajdujących się w pliku konfiguracyjnym php.ini.
Opcjeteznajdują się w sekcji [ S e s sion] i mająnazwy zbu
dowane według schematu: session . na Zh'd opcji.
Przy każdej z nich znajduje się też opis działania. -
6 3 7 8 3 6
UMIESZCZANIE SKRYPTÓW W KODZIE HTML Skrypty PHP są najczęściej wykonywane przez serwer WWW. Do wyodrębnienia kodu skryptu od innych elementów (np. koduHTML) niezbędne jest umieszczenie go wewnątrz znacz ników. Parser (analizator składniowy) PHP będzie przetwa rzał jedynie ten fragment kodu,który znajdzie się pomiędzy znacznikiem otwierającym i zamykającym. Do dyspozycji są cztery typy znaczników: • znaczniki kanoniczne, • znaczniki typu SGML(skrócone), • znaczniki typu ASP, • znacznikiskryptówHTML. ?:nac�niki �noniczn� Znaczniki kanoniczne to standardowe i najczęściej spotykane znaczniki PHP w postaci:Są one rozpoznawane zawsze,niezależnieod tego,jakie opcje włączy się w pliku konfiguracyjnym. Zaleca się stosowanie wyłącznie takich znaczników. Znaczniki typu SGML mają następującą postać: / / kod skryptu ? >Jest to najkrótsza forma znaczników bloku PHP,jaką można zastosować. By skorzystać z tego sposobuzagnieżdżania kodu PHP, należy w pliku konfiguracyjnym php.ini umieścić linię short open tag = On lub włączyć opcję enable short=tagspodczas kompilacji pakietu. Nie należy ichsto sowaćwprzypadkuzagnieżdżaniakoduPHP wplikachXHTML. Znaczniki typu ASP Znaczniki tego typu wywodzą się z techniki ASP. Mają one postać:<% // kod skryptu �>KOMENTARZE W kodzie PHP można zastosować trzy rodzaje komentarzy, dwa zapożyczone ze składnijęzyków takich jak C i C++ i jeden stosowany w powlokach uniksowych: • komentarz blokowy, • komentarz jednowierszowy, • komentarz jednowierszowy uniksowy. Komentarz blokowy Ten typ komentarza zaczyna się od sekwencji znaków I*, a kończy sekwencją *I. Wszystko to,co znajduje się pomię dzy nimi,zostanie zignorowane przez analizator składniowy PHP:To j est komentar:: blokowy */ Należy pamiętać,że komentarz ten koniecznie musi znaleźć się w bloku PHP. Nie wolno też dokonywać jego zagnieżdża- ELEMENTY JĘZYKA Typy danych Występujące w PHP typy danych można podzielić na: • typy proste(skalarne,ang. primitive types, scalar types), • typy złożone(ang. compound types, camp/ex types), • typy specjalne(ang. specialtypes). Typy proste Typ boołean Typ logiczny przyjmujący jedną z dwóch wartości: true (prawda)lub false(fałsz).W przypadkukonwersji innych ty pów natypboolean obowiązuje zasada,że wartość fal se powstaje z przekształcenia: • typu integer o wartości O, • typu double o wartości o, • typu łańcuchowego o wartości pustej " " , • typu łańcuchowego o wartości "o", • tablicy ozerowej liczbie elementów, • typu obiektowego o zerowej liczbie elementów, • typu specjalnego null, • obiektu SimpleXML, utworzonego z pustych znaczników. W każdym innym przypadku w wyniku konwersji otrzymywa na jest wartość true. Typinteger Typ całkowitoliczbowy(oznaczany jako int),reprezentujący zarówno dodatnie, jak i ujemne liczby całkowite. Liczby te mogą być zapisane w trzech różnych formatach: dziesiętnym, ósemkowym (oktalnym) i szesnastkowym (heksadecymal nym). Domyślnie stosowany jest format dziesiętny. Aby zapi sać liczbę ósemkową,należy poprzedzić ją znakiem o(zero), liczbę szesnastkową należy poprzedzić znakami Ox lub ox: • literał16 to liczba w systemiedziesiętnymo wartości 16, • literał02 o toliczbaósemkowaowartości16 dziesiętnie, • literał ox1o to liczba szesnastkowa o wartości 16 dziesiętnie. Maksymalny zakres typu całkowitego zależy od platformy sprzętowo-systemowej, na jakiej uruchamiane jest PHP. Typowe zakresy wartości: System Liczba bajtów Min. Maks. 32-bitowy -231 231_1 64-bitowy -263 263_1 Abymóc korzystaćz tego typuwyróżnienia blokówPHP,należy w pliku konfiguracyjnym włączyć opcję asp tags = on. Możliwość stosowania znaczników ASP zostaTa wprowadzona w PHP w wersji 3.0.4. Nie zaleca się wykorzystywania tej opcji. Znac�niki skryp!óW HTML Jest to typowy znacznik Postać ta, podobnie jak postać kanoniczna,jest rozpoznawa na standardowo i nie wymaga włączania dodatkowych opcji konfiguracyjnych. W przypadku zagnieżdżania skryptów w kodzie HTML lub XHTML nie należy stosować takich znacz ników,ponieważ są niezgodne z aktualnymi standardami. Najprostszy skrypt po prostu wyświetla napis na ekranie. Aby go napisać,można użyć instrukcji echo (" tekst " ) ; lub print ( " teks t " I;. Po umieszczeniu jej między znacznikami PHP i zagnieżdżeniu w kodzie HTML(4.01 strict) uzyskamy:< ! DOCTYPE HTML PUBLIC " - / /"3C/ /DTD HTML '-"4. 01//EN" "h ttp : / / www . 1·13. org/TR/ h tm14 /stri ct . d td" :>
Ta blice informatyczne. PHP 5 Opcjonalny argument charset określa sposób kodowania znaków. Dopuszczalne wartości to: Wartość argumentu Alias Zestaw znaków I so-8859-1 1508859-1 zachodnioeuropejski,Latin1 IS0-8859-15 1508859-15 zachodnioeuropejski,Latin9 UTF-8 wielobajtowy,8-bitowy Unicode cp866 ibm866,866 cyrylica,strona kodowa 866(DOS) cpl251 Windows-1251,win-1251,1251 cyrylica,strona kodowa 1251(Windows) cpl25 2 Windows-1252, 1252 zachodnioeuropejski,strona kodowa 1252(Windows) KOI8-R koi8-ru, koi8r cyrylica BIGS 950 chiński tradycyjny GB2312 936 chiński uproszczony BIG5-HKSCS chiński tradycyjny z rozszerzeniem dla Hongkongu Shift JIS SJIS,932 japoński EUC-JP EUCJP japoński Pozostałe zestawy znaków nie są rozpoznawane i zamiast nich wykorzystywane jest kodowanie IS0-8859-1. Funkcja htmlentities(dostępna od PHP 3) Deklaracja: string htmlentities (string str [, int quote style [, string charset (, bool double encode]l l) Zamienia znaki specjalne HTML na ciągi w formacie &kod;. Na przykład ciąg Napiszostanie zmieniony na: <b>Napis</b>. Znaczenie opcjonal nych argumentów jest takie, jak w przypadku html en tity_decocle. Parametr double_encode (dostępny od PHP 5.2.3) określa, czy kodowane mają być istniejące encje HTML. Od PHP 5.3.0 argument quote_style może przyj mować dodatkową wartość ENT_IGNORE powodującą po mijanienieprawidłowych encji HTML. Funkcjahtmlspecialchars_decode(dostępnaod PHP 5.1.0) Deklaracja: string htmlspecialchars clecode (string str [, int quote style] ) Przekształca encje specjalne na odpowiadające im znaki. Funkcja odwrotna do htmlspecialchars. Funkcja htmlspecialchars(dostępna od PHP 3) Deklaracja: string htmlspecialchars (string str [, int quote style [, string charset [' bool double encode]l l) Znaczenie jest takie samo,jak funkcji htmlentities, z tą różnicą,że zamieniane są jedynie następujące znaki specjal ne: • & zamieniany jest na &; • ' zamieniany jest na &11039;,jeśli została ustawiona opcja ENT QUOTES; • " zamieniany jest na ", jeśli nie została ustawio na opcja ENT_NOQUOTES; • zamieniany jest na >.
Funkcja implode(dostępna od PHP 3)
Deklaracja: string implocle (string glue,
array pieces)
Przetwarza tablicę na ciąg znaków. Pomiędzy poszczególne
elementy wstawiany jest ciąg zapisany w argumencie glue.
Funkcja join(dostępna od PHP 3)
Alias dla funkcji implode.
Funkcja lcfirst(dostępna od PHP 5.3.0)
Deklaracja: string lcfirst (string str)
Zwraca ciąg str, w którym pierwszy znak został zamieniony
na wielką literę(o ile ten znak był literą).
Funkcja ltrim(dostępna od PHP 3)
Deklaracja: string ltrim (string str (,
string charlist])
Usuwa z początku ciągu str wszystkie znaki zawarte
w opcjonalnym argumencie charlist. Jeżeli argument
charlist nie występuje, usuwane są znaki:
• spacja(SPACE)-kod ASCII Ox32,
• tabulator(TAB)-kod ASCII Ox09,
• nowa linia(LF)-kod ASCII OxOA,
• powrót karetki(CR)-kod ASCII OxOD,
• znak zerowy(NUL)-kod ASCII OxOO,
• tabulator pionowy-kod ASCII OxOB.
Funkcja md5_file(dostępna od PHP 4.2.0)
Deklaracja: string md5 file (string filename
[, bool raw output])
Oblicza funkcję skrótu dla pliku filename i zwraca ją(lub
false w przypadku niepowodzenia) w postaci ciągu repre
zentującego 32-znakową liczbę heksadecymalną. Opcjonalny
parametr raw_output (domyślnie false) został dodany
w PHP 5 i wymusza zwrócenie wartości w postaci niesforma
towanej.
Funkcja md5(dostępna od PHP 3)
Deklaracja: string md5 (string str (, bool
raw output])
Działanie analogiczne do md5 file, ale operuje na ciągu
znaków str.
-
Funkcja nl2br(dostępna od PHP 3)
Deklaracja: string nl2br (string str [, bool
is xhtml = trueI)
Dodaje przed każdym znakiem nowego wiersza sekwen
cję
(
w wersjach PHP do 4.0.5). Od wersji 5.3.0 o postaci sekwencji decyduje opcjonalny argument is_xhtml.Gdy jest równy true(wartość domyślna), se kwencją jest
,a gdy jest równy false, sekwencją jest
. Funkcja number_format(dostępna od PHP 3) Deklaracja: string number format (float num ber [, int decimals [� string dec point, string thousands sep]I) - Zwraca sformatowany ciąg znaków, reprezentujący liczbę number.Możliwe zestawy argumentów: • Jeżeli jest jeden argument,wartość number zo staniezaokrąglonado wartościcałkowitej,a grupy Argument Znaczenie Znak rocentu. tysięczne będą oddzielane znakiem przecinka,np. number_forrnat(124124124.5) da w wyniku 124,124,125. • Jeżeli są dwa argumenty,pierwszy reprezentuje wartość liczbową,drugi-liczbę miejscdziesiętnych.Grupy tysięczne będą oddzielane znakiem przecinka,np. number_forrnat(l24124124.5, 2) da w wyni ku 124,124, 124.50. • Jeżeli są cztery argumenty,pierwszy reprezentuje wartość liczbową,drugi-liczbę miejsc dziesięt- nych,trzeci określa separator dziesiętny,a czwarty -separator grup tysięcznych,np. nurnber for mat(124l24l24 .5, 2, ',', '.')-da w wyni ku 124.124 .124,50. Funkcja ord(dostępna od PHP 3) Deklaracja: int ord(string str) Zwracakod ASCII pierwszegoznakuciągustr. Funkcja parse_str(dostępna od PHP 4) Deklaracja: void parse str (string str [, array &arr]) - Przetwarza ciąg strtak,jakby był ciągiem adresu URL znaj dującym się za znakiem ? (tzw. query string) i ustawia od czytane parametry jako zmienne w bieżącym zasięgu. Użycie tablicy jako drugiego argumentu spowoduje,że odczytane dane zostaną umieszczone w tej tablicy. Funkcja printf(dostępna od PHP 3) Deklaracja: void printf (string format [ , mixed args]) Działanieanalogicznedo sprintf,jednak wynikkierowany jest do standardowego wyjścia. Funkcja quoted_printable_decode(dostępna od PHP 3.0.6) Deklaracja: string quoted_printable_decode (string str) Dekoduje ciąg znaków zapisany w standardzie quoted printable. Funkcja quoted_printable_encode(dostępna od PHP 5.3.0) Deklaracja: string quoted printable encode( string str) - Koduje ciąg znaków zgodnie ze standardem quoted printable. Funkcja quotemeta(dostępna od PHP 3) Deklaracja: string quotemeta(string str) Dodaje znak backslash(\) przed każdym ze znaków: . \ + * ? ' $ [ l ( ). Funkcja rtrim(dostępna od PHP 3) Deklaracja: string rtrim(string str [, string charlist]) Usuwa z końca ciągu str wszystkie znaki zawarte w opcjo nalnym argumencie charlist. Jeżeli argument char- 1ist nie występuje,usuwane są tzw. białe znaki(uwzględ nione w opisie ltrim). Funkcja sha1_file(dostępna od PHP 4.3.0) Deklaracja: string shal file(string filename [, bool raw outputJl Oblicza, według algorytmu SHAl, funkcję skrótu dla pliku o nazwie filename i zwraca ją(lub false w przypadku niepowodzenia) w postaci ciągu znaków, reprezentującego 40-znakową liczbę heksadecymalną. Opcjonalny parametr raw_output(domyślnie false) został dodany w PHP 5 i wymusza zwrócenie wartości w postaci niesformatowanej. Funkcja sha1(dostępna od PHP 4.3.0) Deklaracja: string shal(string str [, bool raw output]) Działanie analogiczne do shal file, ale operuje na ciągu znaków str. - Funkcja sprintf(dostępna od PHP 3) Deklaracja: string sprintf Istring format (, mixed args]) Zwraca ciąg znaków sformatowany według argumentu for mat. Argument format może zawierać dowolne znaki oraz specyfikatory konwersji rozpoczynające się od znaku %, po którym umieszcza sięparametryw następującej kolejności: 1. Opcjonalne określenie znaku wartości(+ lub-). 2. Opcjonalne wypełnienie. Określa znak, jaki ma zostać użyty do wypełniania wolnego miejsca. Może to być spacja(domyślnie) lub o;jeśli wypełnieniem ma być inny znak,należy poprzedzić go znakiem '. 3. Argument opcjonalny,który określa wyrównywanie cią gu(domyślnie wyrównywanie do prawej). Znak - ozna cza przełączenie na wyrównywanie do lewej. 4. Argument opcjonalny, który określa minimalną długość ciągu wynikowego w znakach. 5. Argument opcjonalny,który określa precyzję,czyli licz bę miejsc dziesiętnych(dla liczb zmiennopozycyjnych). 6. Wymagany specyfikator typu,który określa sposób trak towania danych,może przyjmować wartości z poniższej tabeli. Argument będzie traktowanyjako liczba całkowita i prezentowany w formacie binarnym. Argument będzie traktowanyjako liczba całkowita i prezentowanyjako znak w standardzie ASCII. Argument będzie traktowanyjako liczba całkowita i prezentowanyjako liczba dziesiętna ze znakiem. Argument będzie traktowanyjako liczba w postaci wykładniczej. Użyta zostanie mała litera e. Argument będzie traktowanyjakoliczba w postaci wykładniczej. Użyta zostanie wielka litera E. Argumentbędzietraktowany iprezentowanyjakoliczba zmiennopozycyjna(zuwzględnieniem ustawień lokalnych). Argumentbędzietraktowanyiprezentowanyjakoliczbazmiennopozycyjna(bezuwzględnianiaustawieńlokalnych). Argument będzie traktowany jako liczba całkowita i prezentowany w formacie ósemkowym. Argument Znaczenie Argument będzie traktowany i prezentowanyjako ciągznaków. Argument będzie traktowanyjako liczba całkowita i prezentowanyjako liczbadziesiętnabez znaku. Argument będzietraktowanyjako liczba całkowita i prezentowany w formacie szesnastkowym. Użyte zostanąmałe literya- f. Argument będzie traktowany jako liczba całkowita i prezentowany w formacie szesnastkowym. Użyte zostanąwielkie litery A- F. Prezentacja liczby w różnych notacjach: echo sprintf("24 dziesiętnie to %d\n", 24); echo sprintf("24 binarnie to %b\nłl, 24); echo sprintf(1124 oktalnie to ruo\n", 24); echo sprintf("24 heksadecymalnie '-+-to %x\n", 24); Formatowanie liczb zmiennopozycyjnych: echo sprintf("Formatowanie domyślne "+%f\n", 1 .49); echo sprintf ("Owa miejsca po przecinku "-+-% .2f\n", 1.49); echo sprintf("Dwa miej sca po przecinku, "-+-wypełnienie zerami :COS.2f\n", 1 . 49); Wiele argumentów: echo sprintf("Data: 04d-<;..02d-%02d", '+2005, 2, 1); Funkcja sscanf(dostępna od PHP 4.0.1) Deklaracja: mixed sscanf Istring str, string format [, mixed & „.]) Odwrotność funkcji sprintf. Przetwarza ciąg znaków str zgodnie z formatem podanym w argumencie format. Ciąg formatujący budowany jest zgodnie z zasadami podanymi przy opisie funkcji sprintf. Funkcja str_ireplace(dotępna od PHP 5) Deklaracja: mixed str ireplace (mixed se arch, mixed repldce, mixed subject [, int &count]) Wykonuje to samo zadanie co str replace, ale nie uwzględnia wielkości liter. - Funkcja str_pad(dostępna od PHP 4.0.1) Deklaracja: string str pad(string input, int pacl_length [, string pad_string [, int pad type]J) Dopełnia ciąg znaków input do rozmiaru pad length znakami zapisanymi w pad_string (domyślnie spacje). Argument pad_type może przyjmować następujące war tości(domyślnie STR PAD RIGHT): • STR_PAD_RIGHT- - wypełnienie do prawej; • STR_PAD_LEFT-wypełnienie do lewej; • STR_PAD_BOTH-wypełnienie od prawej i do lewej. Funkcja str_repeat(dostępna od PHP 4) Deklaracja: string str repeat(string input, int multiplier) - Zwraca ciąg input powtórzony multiplier razy. Funkcja str_replace(dostępna od PHP 3.0.6) Deklaracja: mixed str replace(mixed search, mixed replace, mixed subject [, int &co unt]I Zwraca ciąg znaków lub tablicę,w której w ciągu subject każde wystąpienie ciągu search zostało zastąpione przez ciąg replace. Funkcja str_split(dostępna od PHP 5) Deklaracja:array str split(string str [, int split length] I - Przeksztalca ciągna tablicę podciągów. Liczba podciągów jest określana przez split length. Funkcja str_word_count(dostępna od PHP 4.3.0) Deklaracja: rnixed str warci count(string str [, int format [, string charlist]J) Oblicza liczbę słów w ciągu.Typ zwracanej wartości zależy od wartościdrugiegoargumentu(domyślnie jest on równy O): • O-zwrócona zostanie wartość typu integer; • 1-zwrócona zostanie tablica zawierająca wszystkie słowa z ciągu; • 2-zwrócona zostanie tablica asocjacyjna,w której kluczami będą pozycje poszczególnych słów w ciągu, a wartościami kluczy będą słowa. Dostępny od PHP 5.1.0 opcjonalny parametr charlist po zwala określić dodatkowe znaki,które mają być traktowane jak słowa. Funkcja strcasecmp(dostępna od PHP 3.0.2) Deklaracja: int strcasecmp (string strl, string str2) Porównuje dwa ciągi bez rozróżniania wielkości liter. Zwraca wartość mniejszą od zera,jeżeli strl < str2, wartość większą od zera,jeżeli strl > str2,lub zero,jeśli strl = str2. Funkcja strcmp(dostępna od PHP 3) Deklaracja: int strcmp (string strl, string str2) Działa analogicznie do strcasecrnp, ale uwzględnia wiel kości znaków. Funkcja strcoll(dostępna od PHP 4) Deklaracja: int strcoll (string strl, string str2) Porównuje ciągi strl i str2 z uwzględnieniem ustawień lokalnych(narodowych). Funkcja strcspn(dostępna od PHP 4) Deklaracja: int strcspn (string strl, string str2[, int start [, int length]]) Zwraca długość pierwszego segmentu ciągu str, który nie zawiera żadnego ze znaków występujących w str2. Opcjonalny argument start określa miejsce, w którym ma się rozpocząć przeszukiwanie,natomiast lenght-liczbę uwzględnianych znaków. Funkcja strip_tags(dostępna od PHP 3.0.8) Deklaracja: string strip tags (string str [, string allowable tags]l Usuwa z ciągu str znaezniki HTML i PHP oraz znaki NUL (okodzie O). Funkcja stripcslashes(dostępna od PHP 4) Deklaracja: string stripcslashes(string str) Usuwa znaki lewego ukośnika (backslash), odwrotność funkcji aclclcslashes. Sekwencje specjalne pozostawia nienaruszone. Funkcja stripos(dostępna od PHP 5) Deklaracja: int stripos(string haystack, string needle [, int offset]I Wersjafunkcji strpos, nieuwzględniająca wielkości znaków. Funkcja stristr(dostępna od PHP 3.0.6) Deklaracja: string stristr(string haystack, string needleI Wersja funkcji strstr nieuwzględniająca wielkich i małych liter. Funkcja strlen(dostępna od PHP 3) Deklaracja: int strlen (string str) Zwraca długość ciągu str. Funkcja strpos(dostępna od PHP 3) Deklaracja: int strpos (string haystack, string neeclle [, int offset]) Zwraca pozycję pierwszego wystąpienia ciągu needle w ciągu haystack. Funkcja strstr(dostępna od PHP 3) Deklaracja: string strstr(string haystack, string neeclle, bool before needle) Zwraca część ciągu haystack rozpoczynającą się od pierw szego wystąpienia ciągu needle i kończącą się w końcu ciągu haystack(rozróżnia małe i wielkie litery). Parametr before_needle (domyślnie równy false) został wpro wadzony w PHP 5.3.0. Jeśli zostanie ustawiony na true, funkcja zwróci część ciągu haystack znajdującą się przed podciągiem needle. Funkcja strtok(dostępna od PHP 3) Deklaracja: string strtok (string argl, string arg2I Dzieli ciąg argl na mniejsze ciągi (tokeny) względem zna ków zawartych w argumencie arg2. Funkcja strtolower(dostępna odPHP 3) Deklaracja: string strtolower (string str) Zamienia wszystkie znaki w ciągu str na małe litery. Funkcja strtoupper(dostępna od PHP 3) Deklaracja: string strtoupper (string str) Zamienia wszystkie znaki w ciągu str na wielkie litery. Funkcja substr_count(dostępna od PHP 4) Deklaracja: int int substr count(string hay stack, string needle [,- int offset = O [, int length]]) Zlicza wystąpienia ciągu needle w ciągu haystack. Opcjonalne argumenty offset i length (dostępne od PHP 5.1.0) pozwalają określić miejsce, od którego ma się za cząć przeszukiwanie, oraz liczbę przeszukiwanych znaków. Funkcja substr(dostępna od PHP 3) Deklaracja: string substr Istring str, int start [, int length] I Zwraca fragment ciągu str rozpoczynający się od znaku o indeksie start o długości length. Funkcja trim(dostępna od PHP 3) Deklaracja: string trim (string str (, string charlist]) Usuwa z początku i końca ciągu str wszystkie znaki zawarte w opcjonalnym argumencie charlist. Jeżeli argument charlist nie występuje, usuwane są tzw. białe znaki (uwzględnione w opisiefunkcji1trim). Funkcja ucfirst(dostępna od PHP 3) Deklaracja: string ucfirst(string str) Zwraca ciąg str rozpoczynający się wielką literą. Funkcja ucwords(dostępna od PHP 3.0.3) Deklaracja: string ucwords(string str) Zwraca przetworzony ciąg str, w którym każde słowo rozpo czyna się wielką literą. Funkcja wordwrap(dostępna od PHP 4.0.2) Deklaracja: string wordwrap (string str [, int width [, string break [, boolean cut]] l) Dzieli ciąg str tak,aby powstała kolumna o długości width (domyślnie 75 znaków). Parametr break wskazuje,jakie zna ki mają być dodawane nakońcu każdego wiersza. Jeżeli argu ment cut jest równy false(wartość domyślna),dzielenie odbywa się w taki sposób,aby zostały zachowane całe słowa. Typy złożone Typ tablicowy Tablice można tworzyć,używając wyrażenia array I) z od powiednimi argumentami lub klasycznej konstrukcji z nawia sami kwadratowymi. W pierwszym przypadku schemat jest następujący: $tab = array( ) ; "kluczl11 => 111.,..ar.cośćl", Tl k1 lJ C:::2 " => IT l·Jarto,r;ć2" I 11J:luczN" => 111vartoś.JN" W drugim: $tab["kluczl"] = "1-.rartqSćl"; $tab["k1ucz2"] = " 11artość2"; $tab["kluc::N11] => " ;1artość:J" ; Kluczami mogą być liczby całkowite(tablice indeksowane nu merycznie) lub ciągi znaków(tablice asocjacyjne)-oba typy traktowane są jednakowo.Można utworzyć pustą tablicę: $tab = array II ; , Przy tworzeniu tablicy dopuszcza się pomijanie wartości klu czy - powstanie wtedy tablica indeksowana numerycznie. Indeksy zostaną utworzone automatycznie(od O do N),np.: $tab = array(1, 8, 15); co jest równoważne zapisowi: $tab[] = l; $tab[]=8; $tab[J=l5; Dodawanie danych: $arr = array I); $arr[0] = l; $arr[l] = 2; $arr["pierwsza liczba"] = 5; $arr["druga liczba"] = "osiemnaście"; Modyfikowanie danych: $arr = array(l, 2, 3, 4, 5); $arr[4] = l; $arr[O] = 5;
Tab l ice informatyczne. PHP 5 Usuwanie danych: $arr = array ( l , 2 , 3 , 4, 5) ; I/usunięcie ostatniego elementu unset ( $:arr [ 4] ) ; 1 /usunięcie całej tabl icy unset ( $arr) ; Typ obiektowy Typ obiektowy został opisany w sekcji„Klasy i obiekty''. Typy specjalne Typ resource Wprowadzony w PHP 4 specjalny typ danych, przechowujący odniesieniedo zasobów zewnętrznych(ang. resource), takich jak: elementy systemu plików, połączenia z bazami danych. Zasoby i zmienne typu resource tworzy się za pomocą funkcji specjalnych. Operatory logiczne Operator Znaczenie Przykład Opis Typ null Typ null jest typem specjalnym, informującym, że dana zmienna nie przechowuje żadnej wartości. Jego użycie jest wzasadzie takie samo,jak w innychjęzykach programowania. Przypisanie zmiennej wartości null odbywa się następująco: $zmienna = nul l ; Wielkość liter nie ma znaczenia. Opęraiory Operatory arytmetyczne Operator Znaczenie dodawanie odejmowanie mnożenie dzielenie dzieleniemodulo Przykład $a + $b $a - $b Sa * $b Sa I $b Sa % $b and logiczneAND $a an $b Wynikiem jesttrue, jeśliobaoperandy mają wartość true. logiczne OR $a or $b Wynikiem jest true, jeśli przynajmniejjeden operand ma wartość t rue. logiczne XOR $a xor $b Wynikiem jest true, jeśli operandy mają przeciwne wartości logiczne. logiczna negacja ! $a Zmienia logiczną wartość na przeciwną. & & logiczne AND $a && Sb Wynikiem jest t rue, jeśli oba operandy mają wartość true. I I logiczne OR $a 1 1 $b Wynikiemjest true,jeśli przynajmniej jeden operand ma wartość t rue. Operatory bitowe Operator Znaczenie Przykład Opis iloczyn bitowy AND $a & $b Odpowiednibitbędzie ustawiony, jeśli oba bity składowe sąrówne 1 . suma bitowa OR $a I &b Odpowiedni bit będzieustawiony, jeśli przynajmniejjeden z bitów składowych jest równy 1. suma bitowa XOR $a Ą $b Odpowiedni bit będzie ustawiony, jeśli bity składowe są różne. negacja bitowa - $a Wszystkie bity otrzymują wartość przeciwną do bieżącej. przesunięcie w lewo $a « $b Przesuwa wszystkiebityzmiennej $a o $b kroków w lewo. przesunięcie w prawo $a » $b Przesuwa wszystkie bity zmiennej $a o $b kroków w prawo. Operatory porównywania Operator Znaczenie Przykład Opis równy $a �= $b Wynikiemjest true, jeśli $ a jestrówne $b. identyczny $a === $b Wynikiem jesttrue, jeśli $a jest równe $b i oba operandy są tego samego typu. ' = różny $a ! = $b Wynikiem jest true, jeśli $a jest różne od $b. różny $a <> $b Wynikiemjest true, jeśli $a jestróżneod $b. ' == nieidentyczny $a ! == $b Wynikiem jest true, jeśli $a jest różne od $b lub operandy nie są tego samego typu. mniejszy $a < $b Wynikiem jest true, jeśli $ajest mniejsze od $b. większy $a > $b Wynikiem jest true, jeśli $ajest większe od $b. mniejszy lub równy $a <= $b Wynikiem jest true, jeśli $a jest mniejsze lub równe $b. większy lub równy $a >= $b Wynikiem jest true, jeśli $a jest większe lub równe $b. Operator warunkowy Operator warunkowy ma postać: 1vy e.niel ? ...J:{}-ra �eni e2 1vyra ::eni e3 Konstrukcja ta oznacza:Jeżeli wartością wyrażenia 11yra że ni e1(warunku) jesttrue, wynikiem jest wartość wyrażenia ivyra żeni e2, w przeciwnymprzypadkuwynikiem jest war tość wyrażeniaDla zwiększenia czytelności można dodać nawias w wyraże
niu warunkowym:
$11_Ynik = ( $max == 10 0 ) ? " równe " " różne " ;
Operatory przypisania
Operator ���f!!��ania
Znaczenie
$a = $b $a = $b
$a += $b $a = $a + $b
$a -= $b $a = $ a - $b
$a *= $b $a = $a * $b
I= $a /= $ b $a = $a I $b
i!; = $ a %= $b $a � $a % $b
&= $ a & = $b $a = $a & $b
1 � $a I = $b $a � $a I $b
$a � $a Ą $b
$a «• $b $a = $a << $b
$a >>= $b $a = Sa >> $b
$a . = $b $a = $a . $b
Operator łańcuchowy
Operatorem łańcuchowym jest . (kropka). Operator ten do
konuje konkatenacji, czyli łączenia łańcuchów znakowych.
Przykładowo wynikiem działania instrukcji:< ?php
$ s trl = " To j es t " ;
$ s tr2 = "pr zykładowy tekst . " ;
$ s tr3 � $s trl . " " . $ str2 ;
echo ( $ s t r3 ) ;
?>będzie wyświetlenie ciągu znaków: To je s t przykła
dowy tekst.
Operatory rzutowania typów
Operator Znaczenie
Operator łączenia tablic
Operatorem łączenia tablicjestznak plus(+). Do tablicy znaj
dującejsię po lewej stronieoperatorazostanie dodanazawar
tość tablicy znajdującej się po prawej stronie. Jeżeli w obu
tablicach znajdą się elementy o takich samych indeksach,
pozostaną one w formie niezmienionej, tzn. będą miały takie
samewartości, jakelementy z tablicyznajdującej się po lewej
stronie. Przykładowo:< ?php
$a � array ( 1 => 1, 2 => 2 , 3 => 3 ) ;
$b = array ( 3 => " tr z y " , 4 => " c:.:te ry " ,
'+ 5 � > "p ięć " ) ;
$c = $a + $b;
var dump ( $c ) ;
? > -
Operatory inkrementacji i dekrementacji
Operator inkrementacji ma postać + + i powoduje zwiększe
nie wartości zmiennej o jeden. Występuje on w dwóch for
mach: przyrostkowej i przedrostkowej. Forma przedrostkowa
(++$zmienna) powoduje zwiększenie wartości zmiennej
przed jej wykorzystaniem, natomiast forma przyrostkowa
($ zmienna++) - po jej wykorzystaniu. Operator dekre
mentacji ma postać --, a jego działanie powodujezmniejsza
nie wartości zmiennej o jeden.
Operator kontroli błędów
Operatorkontroli błędów oznaczany jest znakiem @. Jeżelizo
stanie postawiony przez wyrażeniem, to gdyby wygenerowa
ło ono błąd, zostanie on zignorowany i żaden komunikat nie
pojawi się na ekranie. Gdy jest włączona opcja t rack_er
rors, komunikat o błędzie będzie zapisany w zmiennej glo
balnej $php errormsg. Należy pamiętać, że zmienna ta
jest nadpisywanaprzy każdym wystąpieniu kolejnego błędu. -
Operator wykonania
polecenia zewnętrznego
Polecenie zewnętrzne jest wykonywane przez ujęcie go
w znaki lewego apostrofu · · , np. · ls -l a · . Wynik wyko
nania polecenia zewnętrznego staje się rezultatem działania
operatora, np. $lista = · is -1a · ; .
(boolean) lub (boo l ) konwersjadotypu boolean
( integer) lub ( in t ) konwersjadotypu całkowitoliczbowego
( doub l e ) lub ( float ) , lub ( re a l ) konwersjadotypu zmiennoprzecinkowego
( s t ri ng ) konwersja do typu łańcuchowego
( ar ray) konwersja do typu tablicowego
( obj ect ) konwersja do typu obiektowego
( u n s e t ) konwersjadotypu NULL(w PHP 5 lub nowszych)
Operator kontroli typów
Operatorem kontroli typów jest instanceof. Zwraca
t rue, jeżeli dany obiekt jest instancją pewnej klasy, np.:
i f ( $obj instanceof Abc ) echo ' $obj j e s t
'-+instancją klasy Abc 1 ;
Operator tworzenia obiektów
Do tworzenia obiektów służy operator new. Schematyczne
wywołanie operatora new wygląda następująco:
$obiekt = new nazo·1a klasy ( argumen ty
"-+kons truktora ) ;
-
Priorytety opera!orów
Lp. Rodzaje operatorów
Klonowanie i tworzenie obiektów
Indeks tablicy
lnkrementacja, dekrementacja
Negacja bitowa, zmiana znaku wartości, konwersje typów,
kontrola błędów
Kontrola typów
Negacja logiczna
Mnożenie, dzielenie, resztaz dzielenia
Dodawanie, odejmowanie, łączenie łańcuchów znakowych
Przesunięcia bitowe
10 r
u
e�a
r
2!��riejsze, większe,mniejsze lub równe, większe
11 Relacje(równe, identyczne, różne, nieidentyczne)
12 Iloczyn bitowy
13 Bitowa różnica symetryczna
14 Suma bitowa
1S Iloczyn logiczny
16 Suma logiczna
17 Warunkowy
18 Operatory przypisania
19 Iloczyn logiczny
20 Logiczna różnica symetryczna
21 Suma logiczna
22 Rozdzielanie wyrażeń
Lista słów kluczowych
Operator klonowania obiektów
Do klonowania obiektów, czylitworzenia wiernej kopii obiek
tuzachowującej występujące w nim referencje,sluży operator
clone. Typowe wywołanie ma postać:
$zmienna = clone $obiekt ;
Operator rozdzielania wyrażeń
Operator , (przecinek) pozwala na oddzielenie od siebie wy
rażeń. Najczęściejużywany jest w pętli typu for, np.:
fo� (i � O , j � 1 0 0 ; i < 1 0 0 , j
4i++, j --) {
/ * instrukc j e wrn; trza pętli ' I
Symbole
clone, new
[ ]
++, --
-, +, -, { int) , ( f l oat) , ( s t ri ng ) ,
( array) , ( obj ect ) , @
ins tanceof
*, /, %
+, -, .<<, >><, >, <=, >=
==
, ===, ! =, I ==
& &
l i
? :
=, +=, -=
, • =, / =, . =, %=, &=,
"'=, I =, <<=, >>=
and
Wiązanie
bezwiązania
lewe
bezwiązania
prawe
bez wiązania
prawe
lewe
lewe
lewe
bez wiązania
bez wiązania
lewe
lewe
lewe
lewe
lewe
lewe
prawe
lewe
lewe
lewe
lewe
Słowa oznaczone symbolem • są zarezerwowane od PHP 5.3, natomiast oznaczone symbolem ** są zarezerwowane tylko
w PHP 4, a w nowszych wersjach można je stosować.
ab s t ract con s t endif
and cont inue endswitch
array ( ) declare endwhile
defau lt extends
break do final
else for
catch elseif foreach
cfunct ion enddeclare funct1on
c l a s s endfo r global
c l one endforeach go to
Z�jenne
Tworzenie i typy zmiennych
Zmienne rozpoczynają się od znaku $, po którym następuje
nazwa zmiennej. Nazwa ta może zaczynać się od litery lub
znaku podkreślenia, po których może nastąpić dowolna
kombinacja liter, cyfr i znaków podkreślenia. Prawidłowe są
zatem nazwy:
$ zmienna
$ zmienna 1
$_12 3 -
$ 1 zmienna
Przypisaniewartościdozmiennej odbywa sięza pomocąope
ratora =. Można zatem napisać:
$ l i czba = 1 2 4 ;
$napis = 11 t e ks t 11 ;
Typ zmiennej jest przypisywanyautomatycznie,w momencie
nadania jej wartości. Zatem w pierwszym przypadku powsta
ła zmienna typu całkowitoliczbowego, a w drugim-zmien
na typu s t ring.
Ponowne przypisanie wartości do zmiennej zmienia jej typ:
$zmienna = 1 2 4 ' 7 / z111ienna typu inte-ger
$ :mienna = " tekst " ; / / zmiana typu
'-na s t ring
$ zmienna = 1 . 2 4; / / zmiana typu na float
Rzutowanie i konwersja typów
Rzutowanie typów odbywa się za pomocą operatorów rzu
towania. Zmienną należy poprzedzić nazwą typu, na który
dokonywane jest rzutowanie, ujętą w nawias okrągły.< ?phE
$napi s = " 1 5 0 . 3 4 t o j e s t napi s " ;
echo 1 1 y p s t ring : $napi s \ n " ;
Nazwa funkcji Opis
i f publ ic
implements s t a t i c
ins tanceof swi tch
inte r face throw
name s pace try
a l d funct ion
while
private
p rotect ed
$ l i czba = ( double ) $nap i s ;
echo " typ double : $ l iczba \n " ;
$l i czba = ( int eger ) $napi s ;
echo ( " typ integer : $ l i czba \n '1 ) ;
$liczba � (intege r) (doub le!) $napis ;
echo "po dwukrotnym rzutowaniu : $liczba\n11 ;
?>Zmiany typu zmiennej można dokonać również przy użyciu
jednej z funkcji konwertujących:
• intval - konwersja na typ integer,
• doub leval(lub floatval)-konwersja na typ
double,
• st rva l - konwersja na typ s tring.
Typ zmiennej może być ustalony za pomocą funkcji
settype:
bool settype (mixed var, s t ring typ )
Argument t yp może przyjmować jedną z następujących
wartości:
• "boolean" lub "boo l "-dla typu boolowskiego,
• " integer" lub " int"-dla typu całkowitoliczbo
wego,
• " float " lub "double "-dla typu zmiennoprzecin-
kowego(zaleca się używanie float),
• " s t ring "-dlatypułańcuchowego,
• "array" -dla typu tablicowego,
• "obj ect " -dla typu obiektowego,
• "null "-dlatypU NULL.
Kontrola typów
PHP udostępniazestawfunkcjiumożliwiających stwierdzenie,
jakiego typu jest zmienna.
get type ( ) Zwraca ciąg znaków, określający typ zmiennej, lub unknown, gdy typ jest nieokreślony.
is_int ( ) Zwraca wartość true, jeżeli argument jest liczbą całkowitą, lub false w przeciwnym przypadku.
is i n teger ( ) Zwraca wartość t rue, jeżeli argument jest liczbą całkowitą, lub fals e w przeciwnym przypadku.
is_long( ) Zwraca wartość true, jeżeli argument jest liczbą całkowitą, lub fals e w przeciwnym przypadku.
i s_double ( ) Zwraca wartość t rue, jeżeli argument jest liczbą rzeczywistą, lub fals e w przeciwnym przypadku.
is float ( ) Zwraca wartość true, jeżeli argument jest liczbą rzeczywistą, lub fa1 se w przeciwnymprzypadku.
i s_rea l I ) Zwraca wartośćtrue, jeżeli argument jest liczbą rzeczywistą, lub false w przeciwnym przypadku.
is bool ( ) Zwraca wartość t rue, jeżeli argument jest zmienną logiczną, lub false w przeciwnym przypadku.
i s_array ( ) Zwraca wartość true, jeżeli argument jest tablicą, lub fal se w przeciwnym przypadku.
i s_s tring ( ) Zwraca wartość t rue, jeżeli argument jest ciągiem znaków, lub fals e w przeciwnym przypadku.
is_objec t ( ) Zwraca wartość true, jeżeli argument jest obiektem, lub fals e w przeciwnym przypadku.
Tablice informatyczne. P H P 5 St�łe Do utworzenia stałej może być użyta funkcja de fine lub (od PHP 5.3.0) słowo kluczowe const. Schemat użycia define: de fine ( "N.l'1::;rvA_STJłŁEJ" , wartość) ; np.: define ( " PI " , 3 . 1 4 1 5 9 2 65 ) ; define ( 11KOMUNIK.A.T 11 , "To j est treść "-+-komunikatu " ) ; Schemat użycia con st: const !'lii.ZWA_ :3T.f!ŁEJ = r·1ar tość; np.: const PI = 3 . 1 4 1 5 9 2 65 ; const KOMUNIKAT = "T.o j est treść "-+kcmunikatu " ; Ten sposób definiowania stałych może być użyty tylko w za sięgu ogólnym (na najwyższym poziomie, poza funkcjami i klasami). Raz ustalonej wartości stałej nie można zmieniać, wolno jąjedynie odczytywać. Instrukcje warunkowe Instrukcja if„.else Klasyczna instrukcja i f . . . e l s e ma postać: i f ) el se I i n s trukcje:! ) Jeżeli i;arunek jest prawdziwy, zostaną wykonane i n s trukcj el, w przeciwnym razie-i n s trukcj e2. Blok e l s e jest opcjonalny. Instrukcja if„.else if Instrukcja złożona i f . . . e l s e i f ma postać: i f ) / /dalsze bloki else .if else { i n s t rukcjc-.V ) Jeżeli 11aru nek jest prawdziwy, zostaną wykonane i n s trukcj el, w przeciwnym razie, jeśli prawdziwy jest 1'arunek2, zostaną wykonane ins trukcje2 itd. Jeżeli żaden z warunków nie jest prawdziwy, zostanie wykonany blok e 1s e, jest on jednak opcjonalny. Instrukcja switch Instrukcja warunkowa switch może zastąpić serię instruk cji i f . . . el se i f: switch ( ivyra :ćiani e ) ( ) case ivart oSCl : i nstrukcj el ,· break; case 1·1a r c 0Sć.:? : i ns trukcj e2 ; break; I /dals 2e bloki case Jeżeli 11yra żenie ma wartość 11artośćl, wykonywane są i ns t rukcjel; jeśli wartością wyrażenia jest 11ar toś ć2, wykonywane są i n s t rukcj e2 itd.Jeżelinie uda się dopasować wartości wyrażenia do wartości występują cych po klauzulach c as e, wykonywane są instrukcje wystę pujące po siewie de fault. Pętle Pętlawhile Pętla typu while ma postać: while ( 1varunek) { i n s trukcje ; ) Co oznacza: dopóki warunek jest prawdziwy, wykonuj instrukcje. Przykład: $ count � 5 ; whi le ( $ count-- > 0 ) I echo ( $ count) ; Pętlado.„while Pętla do . . . while jest odmianąpętliwhile o postaci: do { ins trukcj e ; ) while ( 1.;arunek) / Co oznacza: wykonuj instrukcje, dopóki warunek jest praw dziwy. Przykład: $count = 4 ; do { echo ($ count ) ; I wh.ile ( $count-- > O l Pętlafor Postać for ma postać: for ( 1q.ra żeni el ; h'y:r:a :: en i e2 ; 1·:yra 2eni e3) { / / instrukcj e Wyrażenie 11yra żeni el inicjuje wartość zmiennej iteracyj nej (kontrolującej przebiegi pętli). wyra żeni e2 to waru nek zakończenia pętli. 11yrażen i e3 modyfikuje zmienną iteracyjną: for ( $ count � 4; $count >= O ; $ count-- ) { echo ( " $ count " ) ; Pętlaforeach Pętla foreach jest użyteczna, gdy istnieje konieczność dostępu do kolejnych elementów tablicy lub(począwszy od PHP 5) składowych obiektu. Występuje w dwóch postaciach: foreach( $tablica as $.11a.rtość) { i n s t..rukcje; oraz foreach ( $ tablica as $ klucz �> $ wa r t ość) { i n s t1-ukcje ; I W pierwszym przypadku nie ma dostępu do aktualnej warto ści klucza, w drugim dostęp jest: => 1 dwa ' , , trzy ' => 3 , ' I /Lu nie ma dostępu do foreoch ( $tab as $v) { echo ( " $vs h0\·I ( I ;
?>Dziedziczenie
cl-ass Punkt
I
)
public $wsp„ ;
public $wąp- Y ;
cl ass KolorowyPunkt exte cis
public $kall.or ;
Konstruktory i destruktory
Definicja konstruktora polega na umieszczeniu wkodziekla-
sy metody o nazwie cons truct, schematycznie
class na z 11a_k1.asy
I
function construct ( )
I/t reść konstruktora
)
I/po zostałe s kładO\;e kla�y
- - - - - - - - - - - - - - - - -
Ciąg dalszy na stronie5 -ł
\n " ) ; ) klucza I/tu j est do s tęp do warto ści klucza fo reach ( $ tab as $key => $v) I echo { " tab l $ key) � $v
\n " ) ; ) ?>Instrukcje break i continue Instrukcja break służy do przerwania danej iteracji pętli for, foreach, while lub do„.whi l e bądź też bloku switch. Jej ogólna postać to: break [N) ; gdzie Nto opcjonalny argument, który w przypadku instruk cji zagnieżdżonych wskazuje, ile poziomów zagnieżdżenia ma być przerwane. Instrukcja continue powoduje przejście do kolejnej iteracji pętli lub instrukcji swi tch (co jest równoznaczne z opuszczeniem tej instrukcji). Schemat użycia con t i nue: continue [N] ; Argument N jest opcjonalny i w pętlach zagnieżdżonych określa, w której pętli ma być kontynuowana iteracja. Instrukcja goto Instrukcja go to(dostępna odPHP 5.3.0) powodujeprzeskok w programie do miejsca oznaczonego etykietą wskazaną w wywołaniu g oto. Schemat użycia: goto e tyki .c tia ; Etykieta powinna być wskazana przez nazwę zakończoną znakiem dwukropka, np.: etykieta : Można przeskakiwać wyłącznie do miejsca skryptu znajdują cego się w tym samym zasięgu(kontekście) wbieżącympliku, niemożna wykonać przeskoku do funkcji, metody czy pętli. Składnia alternatywna Zarówno dla pętli for, foreach, wh i le, jak i dla instruk cji warunkowych i f, i f . . . el s e, swi tch istnieje skład nia alternatywna. Ma ona ogólną postać: endins t.rukcj a ; Instrukcjewarunkowe Blok instrukcji warunkowych i f . . . el se i f w postaci: if ( $ a < $b i I ecłio ( " $a j est mniej s ze od $b " ) ; I else if ( $ a > $b) I echo ( " $a j est i·Jię ks ze od $b " ) ; ) po zapisaniu przy użyciu składni alternatywnej będzie miał postać: if ( $ a < $bi : echo ( " $a j es t mniej s ze od .$b" ) ; elseif > $bi : endi f ; Pętle j est większe od · b " ) ; Pętla wh i le w postaci: while { $a < $b) I print ( " $ a" ) ; $a + = 1 ; ) po zapisaniu przy użyciu składni alternatywnej będzie miała postać: Pętla for w postaci: for { $count � 4 ; $count >= O ; ęcount- - 1 { echo ( 11 $count 11 ) ; I po zapisaniu przy użyciu składni alternatywnej będzie miała postać for ( $ count � 4 ; $count >= O; $count- - ) : echo ( 11 $ count " ) ; endfor; Z ;funk_cj!'! Deklaracje Funkcje definiowane są za pomocą słowa kluczowego function, po którym następuje nazwa funkcji oraz lista argumentów ujętych w nawias okrągły.Schematycznie: funct ion funkcja ( a r..g.I , 'J.rg:? , . . . , argN) { ins trukcj e ; I Nazwa funkcji może zawierać dowolną kombinację liter, cyfr i znaków podkreślenia -nie może się jednak zaczynać od cyfry.W ciele(we wnętrzu) funkcji można zawrzeć dowolny, poprawny składniowo kod PHP, włącznie z definicjami innych funkcji i klas.Wywołanie funkcji polega na podaniu jej nazwy zakończonej nawiasem okrągłym; jeśli mają być przekazane argumenty,należy je umieścić w tym nawiasie: na zi.1a_funkaji ( argumen ty) ; np.:Za pomocą instrukcji return funkcja może(ale nie musi) zwracać wynik dowolnego typu, np.:Argumenty funkcji Funkcja może mieć dowolną liczbę argumentów, oddzie lonych od siebie znakiem przecinka. Argumenty mogą być przekazywane: • przez wartość, • przez referencję, Domyślnie przekazywanie odbywa się przez wartość. Przekazywanie przezwartość W ciele funkcji jest dostęp tylko do kopii przekazywanych danychi ich ewentualna modyfikacjanie ma wpływu na stan zmiennych poza funkcją.Przekazywanie przez referencję Aby przekazać argument przez referencję(i mieć możliwość modyfikacji wewnątrz funkcji oryginalnych danych), należy poprzedzić go znakiem & (ampersand), czyli: function furrkcja ( & argumen t ) { I / treść '+funkcj i ) ; Przykładowo:Domyślne wartości argumentów Argumenty domyślne definiowane są następująco: function na :-iva ( $ a .rgumen t = t·1a r l o.ść) { I / t resć funkcj i Wartość domyślna musi być wyrażeniem stałym(ang. con stant expression), niemoże więcto byćnp. zmienna.Należy równieżpamiętać,żetrzeba podaćwszystkiedomyślneargu menty z prawej strony listy argumentów przed wszystkimi argumentamizwykłymi. function show ( $ argl , $arg2 = " s tr2 " / '-'"$arg3 � " str3 " I I echo ( $arg l . " " . $arg2 . " " . $aJ.·g3 ) Zmienna lista argumentów Do obsługi zmiennej listy argumentów wykorzystywane sątrzy funkcje: • func num args-zwraca liczbę argumentów funkcji; - • func_ge t_arg-zwraca argument o podanym numerze; • func get args-zwraca listę argumentów w postacita6licy. Wykorzystanie func_num_args i func_get_arg:< ?php funct ion func{) { I $val = n n ; $ count = func_ num args ( ) ; for ( $i � O ; $ i < $count; $i++) I $ va'I. . = func_get_a rg ($i l; I return $ va l ; $ s t r = fu11c ( 11 To " , " j est " echo $str ; ?>Wykorzystanie func_get_args:Zasięg zmiennych Zmienne globalne Zmienna globalna,czyli zadeklarowana w skrypcie poza cia łem funkcji lub klasy, jest dostępna bezpośrednio w każdym miejscu skryptu poza wnętrzami funkcji. Aby w funkcji uzy skać dostęp do zmiennych o zasięgu globalnym, należy użyć słowa kluczowego g lobal: global $::mienna l , $zmi.erma.:', ... , $zmi ennaN; np.:< ?php $liczba = 1 0 0 ; function func { ) I I global $lic zba; echo $ l i c=ba ; func ( ) ; ? >Drugą możliwością jest skorzystanie z tablicy $GLOBALS, która zawiera odwołania do wszystkich zmiennych global nych skryptu: $GLOBALS [ ' na21·1a zmi enn j ' ] np.: -Zmienne lokalne Zasięg zmiennych lokalnych jest ograniczony wyłącznie do wnętrza funkcji, w której zostały zdefiniowane. Odwołania w innym miejscu skryptu nie są możliwe. Zmienne statyczne Zmienne statyczne funkcji zachowują swoją wartość pomię dzy jej wywołaniami.W deklaracji używa się słowa stat i e: s tatic $ młz1va zmi en n ej = h'a .rtość; Pierwsze wywołanie fU";ikcji tworzy zmienną statyczną i przy pisuje jej pierwotną wartość.Wartość może być modyfikowa na. Pomiędzy wywołaniami pamiętana jest ostatnia wartość zmiennej, np.:) public public function show ( ) I $this->imi e " ) ; $ this->nazwi s ko" ) ; Należy zwrócić uwagę na sposób odwołania do pól klasy w metodzie s how. Koniecznejestużycie wskazania $ t h i s, które informuje, że są to odwołania do zmiennych zdefinio wanych w klasie, a nie do zmiennych o takich samych na zwach zdefiniowanych wfunkcji show. Specyfikatory dostępu Składowe klasy muszą mieć określony sposób dostępu, który definiuje się przy użyciu specyfikatorów dostępu nazy wanych również modyfikatorami dostępu(ang. access modifiers). Sąto: • pub l i c - dostęp publiczny(dostępjest nieograni czony, można się do nich dowolnie odwoływać); • protected-dostępchroniony(dostęp jest ograniczony do klasy, w której sązdefiniowane, oraz do klas bazowych i pochodnych); • private -dostęp prywatny(dostęp jest ograniczo- ny tylko do klasy, w której są zdefiniowane). Modyfikator musi wystąpić przed nazwą pola, nie musi nato miast przed nazwą metody(jest ona wtedy traktowana tak, jakbyznajdowało sięprzednią słowopublic). Tworzenie obiektów Obiekt danej klasy tworzony jest za pomocą operatora new w postaci: $ zm.i enna = new na .:: 1va_kla :;;:y ( ) ; $osoba � new Osoba I I ; Odwołania do składowych Aby odwołać się do dowolnej składowej klasy, należy użyć operatora ->. Dla pól: $naz1va obi ekt u->{Ją �r·:a p.;Jl -..,; Dla metod: - - $ n a!n1a �bie:: t u- > ;1 a :::·:a me:r..::Jdy ( ar:gumt:!n - '+ty metody) ; - Przykład-;< ?php class Osoba ) pub l i c $ imie; publ ic $nazwis ko ; funct ibn show ( ) I $osoba l � new Osoba ( I ; $ osobal ->imie = "Andrzej " ; $osoba l->nazwisko = 11 I
Tablice informatyczne. P H P 5 Konstruktor jest wykonywany zawsze podczas tworzenia obiektów danej klasy. Należy zwrócić uwagę, że w przypadku dziedziczenia kon struktor klasy bazowej nie jest wywoływany automatycznie. Jeśli zachodzi potrzeba, aby został on wykonany,należy go wywołać za pomocą konstrukcji: parent : construct ( ) np.:X ( ) ; $zmB->X I ) ; ? >Składowe statyczne Składowe statyczne istniejąnawetwtedy,kiedynie ma żadnego obiektu danej klasy i są współdzielone przez wszystkie obiekty danej klasy. Do deklaracji używa się słowa static. Dla pól: specyfi ka t.or_dostępu static $ naz1·1a_aola ; Dla metod: specyfikato r do=bępu sta tie function 4-naZh'.J metody(5!.,Kgume t r) ; Dostęp do składowych statycznych uzyskuje się następująco: nazwa klasy : : nazwa pola na z1va-kla sy : : naz11a-m0 tody ( ar9umenty ) Przykład uŻycia: -< ?php class Test I ) public s tatic $ liczba ; public s tat ic function f I ) I echo ' funk.ej a f ' ; Test : : $l i c zba = 100; echo Test : : $l i czba , " \ n" ; Test: : f () ; ? >Wyjątki Zgłaszanie wyjątków Do zgłaszania wyjątków służy instrukcja throw, po której należy umieścić obiekt wyjątku, schematycznie: throw 1vj:.j a tek; Obiekt wyjątku powinien być typu (klasy) Exception lub dowolnego typu pochodnego od Exception, np.: thrm-1 new Exception ( ) ; lub: $e = new Exception ( ) ; throw $e; Konstruktor klasy Exception ma następującą deklarację: public construct ( [ s tring message = " " (, "+int code = O ( , Exception previous = ""'NOLL] L J ) Dostępne są następujące metody: • getMessage-zwraca komunikat powiązany z danym wyjątkiem (dostępna od PHP 5.1.0); • getPrevious-zwraca obiekt poprzedniego wyjątku (dostępna od PHP 5.3.0); • getCode-zwraca kod powiązany z danym wyjąt kiem(dostępna od PHP 5.1.0); • getFile-zwraca nazwę w pliku, w którym wystąpił dany wyjątek (dostępna od PHP 5.1.0); • getLine-zwraca numer linii kodu, w której wystąpił dany wyjątek (dostępna od PHP 5.1.0); • getTrace -zwraca tablicę z informacjami o wyjątku i miejscu jego wystąpienia(tzw. stack trace; dostępna od PHP 5.1.0); • get TraceAs string -zwraca informacje o wyjątku i miejscujego wystąpienia(tzw. stack trace) w postaci ciągu znaków (dostępna od PHP 5.1.0). Przechwytywanie wyjątków Wyjątki przechwytuje się za pomocą instrukcji t ry„.catch: try { //instrukcje mogące spm·10dować '+wyj ątek ) catch ( typfvyj ą tku ob i ektf'lyj ą t ku ) { I I kod obs ługi blędu Liczba bloków catch niejest ograniczona. RÓŻNE WŁAŚCIWOŚCI ' Zmienne superglobalne Zmienna $GLOBALS $ SERVER $__GET $ POST $ COOKIE $_FI LES $_ENV $ REQOEST $ SESS ION $php_errormsg $HTTP RAW POST DATA $http_response_header $ argc $argv Znaczenie Tablica zawierająca odniesienia do zmiennych o zasięgu globalnym. Kluczami są nazwy, a wartościami kluczy-wartościzmiennych. Tablica zawierająca informacje ustawiane przez serwerWWW. Tablica zdanymiprzekazanymi do serwera WWW za pomocąmetodyGET. Tablica z danymi przekazanymi do serwera WWW za pomocąmetody POST. Tablicazawierająca cookies przekazane z serwera WWW. Tablica zawierająca elementy przekazane do skryptu za pomocą metody POST podczas przesyłania plików do serwera. Tablicazawierająca wartości zmiennych środowiskowych przekazanych z systemu, na którym działa PHP. Tablica asocjacyjna zawierająca dane z $ GET,$ POST i $ COOKIE. Tablica asocjacyjna z danymizwiązanymi z bieżącąsesją. Zmienna zawierająca tekst poprzedniego komunikatu o błędzie. Dostępna tylko wtedy, gdy w plikukonfiguracyjnymphp.iniopcja t rac k er rors zostałaustawiona na On(włączona). Zmienna zawierająca nieprzetworzone dane przesłane do skryptu za pomocąmetody POST. Tablica zawierająca nagłówki protokołu HTIP przesłane przez serwer w odpowiedzi na otrzymane żądanie(odwołanie). Zawiera liczbę argumentów przekazanych do interpretera PHP, gdy skrypt jest wywoływany z wiersza poleceń. Pierwszym argumentemjest nazwa pliku zawierającego skrypt. Zmienna jest dostępna, jeśli w pliku konfiguracyjnym php.ini została włączona opcja regi s ter_ Tablica argumentów przekazanych do interpretera PHP,gdy skryptzostał wywołany z wiersza poleceń. Pierwszym elementem tablicy ($argv [ o ] ) jest nazwa pliku ze skryptem. Zmienna jest dostępna, jeśli w pliku konfiguracyjnym php.ini została włączona opcja register_ Przetwarzanie fo_r_"!lula�zy Metoda POST Metoda GET W przypadku metody GET dane z formularza przekazywane są jawnie,w adresie URL, który ma wtedy postać: http : / / adre s . s e rwe ra I s k ryp t . php? zmie n n a l =war tośćl & zmienna2=wartość2. Dane będą dostępne dla skryptu w globalnej tablicy $ GET. Kluczami tej tablicy są nazwy elementów formularza,a wartościami wskazywanymi przez klucze - odpowiadające im dane. Przykład odczytu tablicy $_GET:< ?php foreach ( $ GET as $ key => $val) { print ( "$key : $val
" ) ; } ? >Informacje przesyłane do serwera nie są widoczne dla użyt kownika, można też przesłać w ten sposób większą ich ilość. Dane będą dostępne dla skryptu w globalnej tablicy $ POST. Kluczami tej tablicy są nazwy elementów formularza; a wartościami wskazywanymi przezklucze- odpowiadające im dane. Przykład odczytu tablicy $_POST: $val) I print ( "$key : $val
" ) ; ? >Odczyt pliku Do otwarcia pliku służy funkcja fopen, do zamknięcia- fclose, a do odczytu danych-fread. Funkcja fread odczytuje dane z pliku wskazywanego przez jej pierwszy argument (deskryptorzwrócony przez fopen): string fread {resource handle, int length) Odczytywana jest liczba bajtów wskazywana przez pa rametr length, chyba że podczas odczytu zostanie osiągnięty koniec pliku. W takim przypadku czytanie jest przerywane i zwracana jest zawartość odczytana do tego miejsca. Zawartość pliku jest zwracana w postaci zmiennej typu string, czyli w postaci łańcucha znaków.Funkcja feof zwraca wartość true,jeśli został osiągnięty koniec pliku lub wystąpił błąd,natomiast wartość false -w każdym innym przypadku. Aby odczytać naraz całą za wartość pliku (zamiastpętli while), można użyć instrukcji: $ s tr = fread ( $ fd, filesize '+ { $ fi lename ) ) ; lub funkcji file_ge t_contents: $ str = file get contents ( "naz\·Ja pli- '+ku") ; - - - Funkcja f i l e s i ze zwraca rozmiar pliku w bajtach. Zapis pliku Zapis do pliku odbywa się za pomocą funkcji fwri te (lub jej aliasu fputs). Deklaracjajest następująca: int fwrite ( re source handle, string '+str [ , int length } ) Argument h andle jest to identyfikator pliku zwrócony przez fopen, s t r to dane, które mają zostać zapisane. Parametr length jest opcjonalny i określa, ile bajtów ma zostać zapisanych. Jeżeli nie zostanie podany, zapisane zostaną wszystkie dane zawarte w s tr. Przy zapisywaniu plików należy zwrócić szczególną uwagę na tryb otwarcia, użyty w funkcji fopen. W szczególności należy pamiętać, żetryb w+ usuwa wszystkie dane w otwieranym pliku, nato miast tryb r+ powoduje zapis na początku pliku,ale nadpi sujeznajdujące się tam dane.Argumenty funkcji fopen Deklaracja: resource fopen ( s tring file- name , s tring made [ , bool use include path [ , resource context ] ] I - W zależności od tego, w jakiej postaci zostanie podany argument fi lename, zostanie otwarte połączenie HTIP, FTP, jeden ze standardowych strumieni lub plik w systemie plików serwera. 1. Jeśli fi lename zaczyna się od ciągu s chema : I /, PHP zakłada,że schema oznacza jeden z zarejestro wanych protokołów (np. HTIP, FTP itp.) i poszukuje odpowiedniej procedury obsługi.Jeżelitaka procedura nie zostanie odnaleziona (podane zostało odwołanie Znacznik Opis Wskaźnik am lub pm A Wskaźnik AM lub PM Czas internetowy w formacie Swatch Data w formacie IS0-8601 (dostępny od PHP 5) do nieobsługiwanego protokołu),wygenerowana zo stanie nota informacyjna(ang. notice), a skrypt będzie kontynuował działanie tak, jakby fi 1 en ame wskazy wał plik lokalny. 2. Jeśli filename wskazuje plik lokalny(lub PHP założy, że tak jest),otwierany jest strumień powiązany z tym plikiem. Należy się upewnić, że prawa dostępu są usta wione tak,iżpozwalają aparatowi wykonawczemu PHP na odwołanie się do pliku. 3. Jeśli fi lename zaczyna się od php : I Is tdin, php : / / s tdout lub php : / / s tderr, zostanie otworzony odpowiedni strumień. 4. Jeżeli fi lename wskazuje jeden z protokołów sie ciowych, PHP sprawdza najpierw, czy jest włączona opcja konfiguracyjna a l low url fopen. Jeśli nie jest, generowane jest ostrzeżenie, awywołanie fopen kończy się niepowodzeniem. Jeżeli otwarcie wskazanego pliku lub adresu URL się nie powiedzie, zostanie zwrócona wartość fal s e. Parametr mode może przyjmowaćjedną z następujących wartości: • ' r ' -otwarcie tylko do odczytu, wskaźnik pliku zostanie ustawiony na jego początku. • ' r+ ' -otwarcie do odczytu izapisu, wskaźnik pliku zostanie ustawiony na jego początku. • ' w ' -otwarcie tylko do zapisu,wskaźnik pliku jest ustawiony na jego początku,długość pliku jest obcina na do zera. Jeśli plik nie istnieje, następuje próbajego utworzenia. • ' w+ ' -otwarcie do zapisu i odczytu, wskaźnik pliku jest ustawiony na jego początku,długość plikujest obcinana do zera. Jeśli plik nie istnieje,następuje próbajego utworzenia. • ' a ' -otwarcietylko do zapisu,wskaźnik pliku jest ustawiony na jego końcu. Jeśli plik nie istnieje, następuje próba jego utworzenia. • ' a+ ' -otwarcie do zapisu i odczytu,wskaźnik pliku jest ustawiony najego końcu. Jeśli plik nie istnieje, następuje próba jego utworzenia. • ' x ' -utworzenie i otwarcie pliku tylko do zapisu, wskaźnik pliku jest ustawiony najego początku. Jeśli plik istnieje,zwracana jest wartość fa1 s e i genero wane jest ostrzeżenie. • ' x+ ' -utworzenie i otwarcie pliku do odczytu izapisu, wskaźnik pliku jest ustawiony najego począt ku. Jeśli plik istnieje, zwracana jest wartość fa 1s e i generowane jest ostrzeżenie. • c-otwiera plik w trybie tylko do zapisu. Jeżeli plik nie istnieje,zostanieutworzony,jeśliistnieje,wskaźnik po zycjizostanie umieszczony na początku-zawartość pliku niejest tracona. Opcja dostępna od PHP 5.2.6. • c+-otwiera plik w trybie do zapisu i odczytu.Jeżeli plik nie istnieje, zostanie utworzony,jeśli istnieje, wskaźnik pozycji zostanie umieszczony na początku -zawartość pliku niejest tracona. Opcja dostępna od PHP 5.2.6. Parametr tryb możerównieżzawierać opcjonalnąliteręb, np.: rb, r+b.Wskazujeona,żeplikma byćotwarty wtrybie binarnym, a nie tekstowym, i jest użyteczny w systemach, które dokonują takiego rozróżnienia (np. Windows). Jeśli system nie dokonuje takiego rozróżnienia,parametr b zo stanie zignorowany. Począwszy od PHP 4.3.2, tryb binarny jest trybem domyślnym. Przełączenie w tryb tekstowy od bywa się przezużycielitery t, np.: wt, w+t. Dat� i cz�s Poniżej przedstawiono wybrane funkcje operujące na dacie i czasie. Funkcja checkdate(dostępna od PHP 3) Deklaracja: bool checkdate ( in t month , int day , int yea r ) Zwraca true, jeżeli podane jako parametry wartości two rzą poprawną datę dla kalendarza gregoriańskiego.W prze ciwnym przypadku zwraca wartość false. Funkcja date (dostępna od PHP 3) Deklaracja: s tring date ( string format [ , int t imes tamp ] ) Zwraca ciąg znaków, sformatowany zgodnie z szablonem podanym jako parametr format. Jeżeli zostanie podany parametr t i mestamp, zostanie zwrócona odpowiadająca mu data. Jeżeli parametr ten zostanie pominięty, będzie zastosowany bieżący czas lokalny. Szablon format może zawierać znaczniki formatujące: Przykładowe wartości am, pm AM,PM od OOO do 999 2009-03-16T17:29:51+00:00 d Dzień miesiąca w formacie dwucyfrowym z zerem na początku od 01 do 31 M Dzień miesiąca w formie skrótu trzyliterowego Identyfikator strefy czasowej (dostępny od PHP 5.1.0) Pełna nazwa miesiąca Godzina w formacie 12-godzinnymbezzera na początku Godzina w formacie 24-godzinnym bez zera na początku Godzina w formacie 12-godzinnym z zerem na początku Godzina w formacie 24-godzinnymz zerem na początku Minuty z zerem na początku Znacznik czasu zimowego (1) i letniego (O) Dzień miesiąca bez zera na początku Dzień miesiąca w postacitekstowej Znacznik roku przestępnego Miesiąc w postaci dwucyfrowej z zerem na początku Miesiąc w postaci trzyliterowej Miesiąc w postaci liczbowej bez zera na początku Numer dnia w tygodniu, zgodny z formatem IS0-8601 (dostępny od PHP 5.1.0) Rok zgodny z IS0-8601(dostępny od PHP 5.1.0) od„Mon"do„Sun" GMT,UTC od„January"do„December" od 1 do12 od O do 23 od 01 do 12 od OO do 23 od OO do 59 O lub 1 od 1 do31 od„Monday''do„Sunday' 1 oznacza rokprzestępny od Ol do12 od„Jan"do„Dec" od 1 do 12 od 1(ponledziałek) do 7 (niedziela) 1998, 2010 Różnica w stosunku do czasu Greenwich „+0200' Data formatowana zgodnie ze standardem opisanym w rfc2822 ,Wed,21 Dec 201O 18:21:17 +0200" Liczba sekundz zerem na początku od OO do 59
Tablice informatyczne. PHP 5 Znacznik Opis Przykładowe wartości Przyrostek literowy dla liaby określającej dzień tygodnia (dla języka angielskiego) "st", "nd", "rd" lub "th" Liaba dni w danym miesiącu Skrót określający strefę aasową Liaba milisekund(dostępny od PHP 5.2.2) Znaanik aasu Uniksa Dzień tygodnia w postaci numerycznej od 28 do 31 EST.MOT 46892 liaba sekund, która upłynęła od 1 styania 1970 00:00:00 GMT od O(niedziela) do 6(sobota) w Numer tygodnia w roku zgodnie ze standardem IS0-8601 (dostępny od PHP 4.1.0) od1 do 52 Rok w postaci dwucyfrowej np. 98, 10 Rok w postaci aterocyfrowej np. 1998, 201O Numer kolejnego dnia w roku, numeracja od O od O do365 Przesunięcie strefy aasowej w sekundach od -43200 do 50400 Funkcja getdate(dostępna od PHP 3) Deklaracja: array getdate ( [ int timestamp } ) Zwraca tablicę zawierającą dane określające bieżącą datę i aas lub też, kiedy podany zostanie parametr t imes tamp -datę i aas, określone przez ten parametr. Zwrócona tablica zawiera następujące kluae: Klucz seconds minutes hours mday wday year yday weekday month Znaczenie Liaba sekund Liabaminut Godzina Dzień miesiąca Dzień tygodnia w postaci numeryanej, O oznaaa niedzielę Miesiąc w postaci liabowej Rok w postaci liabowej(aterocyfrowej) Numer kolejnego dnia w roku Dzień tygodnia w postacitekstowej Nazwa miesiąca w postacitekstowej Znacznik aasu Uniksa Funkcja gettimeofday(dostępna od PHP 3.0.7) Deklaracja: mixed gettimeofday ( [bool turn float } ) Zwracatablicę zawierającą dane dotyaące bieżącego aasu. Kluaamitablicy są: Klucz Znaczenie Sekundy Mikrosekundy minuteswest Minuty na zachód od Greenwich dsttime Rodzaj aasu(letni lub zimowy) Jeżeli opcjonalny parametr return float (dostępny od PHP 5.1.0) zostanie ustawiony na true (domyślnie jest równy false), zamiast tablicy zwrócona zostanie wartość typu float. Funkcja gmdate(dostępna od PHP 3) Deklaracja: s tring gmdate ( s tring format [ , int timestamp } ) Zwraca ciąg znaków sformatowany zgodnie z szablonem podanym jako argument format. Jeżeli zostanie podany argument times tamp, zostanie zwrócona odpowiadająca mudata.Jeśli parametrten zostaniepominięty,zostanie użyty aasbieżący. Zawsze zwracany jest aas w formacie GMT (ang. Greenwich Mean Time). Szablon format może zawierać znaaniki formatujące podane w opisie funkcji date. Funkcja gmmktime(dostępna od PHP 3) Deklaracja: int gmmktime ( [ int hour [ , int minute [ , int second [ , int month [ , int day [, int year [, int i s ds t } J JJJ ] ] ) Działanie jest identyczne jak funkcji ,;;it ime, z tą różnicą, żeparametry reprezentują czas GMT. Funkcja gmstrftime(dostępna od PHP 3.0.12) Deklaracja: string gms tr ft ime ( s tri ng format [ , int times tamp ] ) Dzialanie jest analogianie do strftime, z tą różnicą, że zwracany jest aas GMT. Funkcja idate(dostępna od PHP 5) Deklaracja: int idate ( s tring format [ , int timestamp J ) Zwraca wartość typu integer, określającą datę lub aas, sformatowaną zgodnie z parametrem format. Parametrten może przyjmować jedną z wartości: B, d, h, H, i, I, L, m, s, t, u, w, w, y, Y, z, z. Ich znaaenie jest zgodne z tym podanym przy opisie funkcji dat e. Funkcja localtime(dostępna od PHP 4) Deklaracja: array loca l time ( [ int t ime s tamp [ , bool is as soc i a tive ] ] ) Zwraca tablicę z zawartością identyaną jak struktura zwra cana po wywołaniu funkcji localtime w C. Pierwszym argumentem jest znaanik aasu time s tamp. Jeżeli nie zo stanie on podany, będzie uwzględniony bieżący aas lokalny. Ustawienie argumentu is associative na false łub niepodanie go powoduje zwrócenie zwykłej tablicy indekso· wanej łiabowo. Po ustawieniu argumentu is_associa- Znacznik Opis % a Nazwa dniatygodnia wpostaci skróconej %A Pełna nazwa dniatygodnia %b Nazwa miesiąca wpostaci skróconej %B Pełna nazwa miesiąca Przykładowe wartości od O do 5 9 od o do 5 9 od o do 23 od 1 do 31 od o(niedziela) do 6(sobota) od 1 do 12 1995, 2015 od o do 3 65 Sunday,Monday January, February zazwyczajod -2 1 474 83648 do 214 7 483647 tive na t rue zwracana jest tablica asocjacyjna o następu jących kluczach: Klucz Znaczenie tm sec Liaba sekund tm min Liabaminut tm_hour Godzina tm_mday Dzień miesiąca w postaci liabowej tm mon Miesiąc w roku w postaci liabowej tm year Liaba lat, które upłynęły od roku 1900 tm wday Dzień tygodnia tm yday Dzieńroku tm_isdst Znaanik aasu letniego i zimowego Funkcja microtime(dostępna od PHP 3) DeklaraCJa:mixed microt1me ( [bool get a s float } ) Zwraca uniksowy znacznik aasu, podając liabę sekund i mi krosekund, które upłynęły od 1 stycznia 1970 roku od godziny 0:00:00 aasu Greenwich. Jeżeli opcjonalny parametr get as float (dostępny od PHP 5) zostanie pominięty luli będzie miał wartość fals e, zwracany ciąg będzie miał po stać msec s ec, gdzie msec oznaaa mikrosekundy, a sec -sekundy. Jeżeli ten argument będzie miał wartość true, zostanie zwrócona wartość typu float. Funkcja działa tylko na platformach obsługujących wywołanie funkcji systemowej gettimeofday. Funkcja mktime(dostępna od PHP 3) Deklaracja: int mktime ( [ int hour [ , int minu te [ , int second [, int month [ , int day [, int year [ , int i s ds t } ] } } ] } } ) Zwraca uniksowy znaanik aasu - dla podanych argumentów. Część parametrów(bądż wszystkie) można pominąć, pod wa runkiem żeodbywasięto odprawejdolewej strony.Brakujące danezostanązastąpionezgodniezbieżącym aasemlokalnym. Parametropcjonalny is dst (odPHP 5.1.0ma on status de precated) przyjmujewartość 1 dla aasu zimowego, o dla aasuletniego łub - 1, jeżeli typ aasu nie jest znany. Argument ye ar może być podawany w postaci dwu- łub aterocyfrowej. W pierwszym przypadku wartości od O do 69 są przekładane na lata 2000 - 2069, natomiast wartości 70 - 99 na lata 1970 - 1999. Ostatni dzień miesiąca może być wyrażony jako zerowy dzień następnego. Funkcja strftime(dostępna od PHP 3) Deklaracja: s tring s tr ftime ( s tring format [ , int times tamp } ) Zwraca ciąg znaków, sformatowany zgodnie z szablonem podanym w argumencie format. Jeżeli zostanie podany argument times tamp, zostanie zwrócony odpowiadający mu aas. Jeśli parametr ten będzie pominięty, zostanie uży ty bieżący aas lokalny. Nazwy miesięcy oraz dni tygodnia, a także inne parametry związane z ustawieniami lokalnymi będą zgodne z danymi lokalizacyjnymi ustawionymi funkcją s etlocale. W szablonie formatującym można używać znaaników przedstawionych w poniższej tabeli. % c Data i aas w formaciezgodnym z ustawieniami lokalnymi % C Wiek(rokpodzielonyprzez sto i obciętydo liaby całkowitej, zakres od OO do 99) %d Dzieńmiesiąca wpostaci numeryanej, zakres od Ol do 31 %D Znaaenie identyane jak %m/ %dl%y % e Dzieńmiesiąca wpostaci numeryanej, liabyjednocyfrowepoprzedzane sąspacją % F Znaaenie identyane z % Y-%m-%d %g Znaaenie takiejak %G, bez uwzględnienia wieku % G Czterocyfrowy rok(z uwzględnieniem numeru tygodnia wg standardu ISO) Znacznik Opis %11 Znaaenie takie samojak %b %H Godzina w formacie 24-godzinnym U Godzina w formacie 12-godzinnym %j Dzień w roku, zakres od 001 do 366 Godzina w formacie dwunastogodzinnym ze spacjąpoprzedzającąpojedyncze cyfry %m Miesiąc wpostaci numeryanej %M Liczbaminut % n Znaanik nowej linii %p Znaanikprzedpołudniem-popołudniu(wielkimi literami) % P Znaanikprzedpołudniem-popołudniu(małymi literami) % r %R %5 %T Znaaenie identyane z % I : %M : % 5 %p Znaaenie identyane z %H : %M Liaba sekund w formacie dwucyfrowym Znaktabulac"i Bieżący aas, odpowiednik %H : %M : %5 %u Numer dnia tygodnia, 1 oznaaaponiedziałek, 7-niedzielę w Numertygodnia w roku, poaynając odpierwszej niedzieli jakopierwszego dniapierwszego tygodnia %V Numertygodnia w roku zgodnie ze standardemISOB601:1998 Dzień tygodnia, o oznaaa niedzielę, 6-sobotę %W Numertygodnia w roku,poaynając od pierwszegoponiedziałku jakopierwszego dniapierwszego tygodnia %x Reprezentacja daty(bez aasu), zgodna z bieżącymi ustawieniami lokalnymi %X Reprezentacja aasu(bez daty), zgodna z bieżącymi ustawieniami lokalnymi %y Rok wpostaci dwucyfrowej(bez oznaaenia wieku) %Y Rok wpostaci aterocyfrowej(z oznaaeniem wieku) % z Przesunięcie dla bieżącej strefy aasowej lub skrót nazwy strefy aasowej(zależnieo dsystemu operacyjnego, na którym działa PHP) % Z Określenie strefyaasowejniezwracaneprzez znacznik %z % % Znak% Funkcja strtotime(dostępna od PHP 3.0.12) Deklaracja: int strtotime ( s tring $ t ime [ , int $now ] ) Dokonuje konwersji ciągu znaków opisującego datę i czas na uniksowy znacznik aasu. Parametr t ime powinien zawierać datę w jednym z angielskich formatów zgodnych ze składnią GNU. Poprawne są m.in. przykładowe wywołania: s trtotime ( " now " ) r " \n " ; strtotime ( " lO September 201 4 11 ) , " \n " ; s trtotime ( " + l day" ) , " \n " ; strto time ( " + l week " ) , " \n" ; strtotime ( " + l wee k :. days 4 hours 42 seconds " ) , " \n" ; strtotime ( "next Thursday" ) , " \n " ; s trtotime ( " last Mond@:_y" ) , " \n " ; Jeśli nie można dokonać konwersji, funkcja zwraca wartość fa lse(w wersjach poniżej 5.1.0 zwracana jest wartość - 1). Funkcja time(dostępna od PHP 3) Deklaracja: int t ime ( void) Zwraca uniksowy znaanik czasu. Odbieranie i wysyłanie plików Odebranie pliku wysłanego do serwera Plik po odebraniu przez serwer jest zapisywany pod tymaa sową nazwą w katalogu zdefiniowanym w opcjachkonfigura· cyjnych. Dane dotyaące jego nazwy, wielkości itp. znajdują się w globalnej tablicy $_FILES (plik identyfikowany jest przez nazwę pola input typu file z formularza WWW). Istnieje dostęp do następujących informacji: • $ FI LES [ ' na zwa pola ' ] [ ' name ' } --=-oryginalna nazwa Pliku, • $ FI LES [ ' nazwa pol a ' J [ ' type ' J -=-typMIME(np. image/jpeg), • $ FILES [ ' nazwa pola ' } [ ' s i ze ' } ....:-wielkość pliku w bajtach, • $ FILES [ ' nazwa pol a ' J [ ' tmp name ' J --=-tymaasowa nazwapliku, - • $ FILES [ ' na zwa pol a ' ] [ ' error ' ] --=-kod błędu(status operacji). Do przeniesienia odebranegoplikuz katalogu tymaasowego do docelowej lokalizacji należy użyć funkcji o nazwie move uploaded_file. Pierwszym jej argumentem jest nazwa pliku źródłowego(ayli nazwa tymaasowa pliku), drugim- nazwa pliku docelowego. Funkcja ta zwraca wartość true, jeżeli operacja zakończyła się sukcesem, lub wartość false w przeciwnym przypadku. $uploaddir = ' /upload/ ' ; if (move_uploaded_f ile ( $_FI LES [ ' pli k ' J 4 { ' tmp name ' 1 , $uploaddir . $ FILES ( ' plik ' J ( ' name ' J ) ) I echo ( " Plik :Ostał załadowany . " ) ; ) else ( echo ( " Plik nie �os tał za l u doh'any 11 ) ; Wysłanie pliku z serwera do przeglądarki Procedura postępowania jestnastępująca: 1. Otwarcie żądanego pliku za pomocądostępnych funkcji. 2. Odayt i zapamiętanie jego rozmiaru oraz zawartości. 3. Zamknięcie pliku. 4. Wysłanie do przeglądarki trzech nagłówków HTTP: heade.r ( "Con tent-Type : application/ 1..+octet-stream" ) ; header ( "Content-Length : rozmiar �� 0 a 1 di��u/,.'�;ntent-Disposi tion : - 4at.tachment ; filename=nazwa E1j.ku " ) ; 5. Wysłanie do przeglądarki zapamiętane]zawartości pliku. Przykład:Sesje Identyfikator sesji Każda sesja użytkownika ma przypisany własny, unikatowy identyfikator. Jest to losowa liaba generowana przez PHP, przechowywana na serwerze i w komputerze użytkownika. W tym drugim przypadku najczęściej w cookies. Jeżeli jed nak przeglądarka użytkownika nie akceptuje cookies lub jeśli autor witryny nie żyay sobie przechowywania identyfikatora w plikach tegotypu, identyfikator może być dodawany do ad resu URL (jeśli w opcjach konfiguracyjnych została włąaona opcja us e_trans_id). Rozpoczynanie sesji Sesja może być rozpoaęta przez wywołanie funkcji ses si on_start, np.: sess ion start ( ) ; Kiedy sesja wykorzystujecookies,ta funkcja musi być wywoła na, zanim jakiekolwiek dane zostaną wysłane do przeglądarki (chyba że włączonezostało buforowanie wyjścia). Sesja może być rozpoczynana automatyanie podczas wywo ływania każdego skryptu, o ile w pliku php.ini zmienna konfi· guracyjna s e ssion . auto start została ustawiona na 1 (wartością domyślną jest o). - Kończenie sesji W celu zakońaenia sesji należy wywołać funkcję session des troy. Usuwa ona zasoby powiązane z sesją, nie usuwa jednak zarejestrowanych zmiennych ani cookie zapisanego na komputerze użytkownika. Te czynności należy wykonać we własnym zakresie. Zmienne sesji Tworzenie zmiennych Zmienne sesji są zapisywane w globalnej tablicy o nazwie $_SESSION. Aby zapisać(zarejestrować) zmienną w sesji, należy skorzystać z konstrukcji: $ SESSION [ • nazi..ra zmi enn,;.j ' ] = ivartosC; Aby�daytać wartość zmi�nnej,trzebaodwołaćsię doindek· su wskazującegojej nazwę: $ zmienna = $ SESSION [ ' nazwa zmiennej ' ] ; Gdy trzeba sprawdzić,ay istnieje dana zm;nnasesji,stosuje się typową funkcję i ss et w postaci: i sset ( $_SESSION [ ' na =i;a_ =mi enn� ) ) Jeśli zwróconą wartością będzie true, oznaaa to, że zmien na jestzarejestrowana,a jeśli false-że nie jest. Usuwanie zmiennych Zmienne, które zostały zarejestrowane w sesji, trzeba przed jej zakońaeniem wyrejestrować. Należy skorzystać z funkcji unset w schematyanej postaci: unset ( $_SESSION [ ' na .:1.;a_ zm.i enne i...'..J ) Nastąpiwtedy wyrejestrowanie zsesjioraz usunięciezmiennej. Konfiguracja sesji Na zachowanie sesji można wpływać, modyfikując wartości opcji znajdujących się w pliku konfiguracyjnym php.ini. Opcjeteznajdują się w sekcji [ S e s sion] i mająnazwy zbu dowane według schematu: session . na Zh'd opcji. Przy każdej z nich znajduje się też opis działania. - 6 3 7 8 3 6