Wybrane Języki Programowania

Download Report

Transcript Wybrane Języki Programowania

Wstęp do baz danych
- język programowania PHP
Dr Andrzej Bąk
Cechy PHP



Składnia spokrewniona z innymi językami jak C,
Pascal
Nie trzeba dołączać żadnych bibliotek ani dyrektyw
kompilatora.
PHP zawiera zestaw zabezpieczeń dla programistów
i administratorów, działający na poziomie systemu
oraz aplikacji.
Cechy PHP - 2



Jest językiem zagnieżdżanym, niezwykle elastycznie
spełnia wymagania programisty. Można go
integrować z JavaScript, HTML, XML i innymi.
Skrypty PHP są kompilowane w całości po stronie
serwera a potem wysyłane do użytkownika, dlatego
nie ma problemów ze zgodnością przeglądarek
PHP - kody źródłowe środowiska i wersje
instalacyjne dla Windows są całkowicie darmowe.
Również serwer WWW Apache.
Skąd pobrać PHP?

http://www.php.net/downloads.php



PHP 5.2.6 installer
około 11 MB komplet
Można też pobrać sobie dokumentację
Serwer Apache

Do pobrania z następujących miejsc:


http://www.apache.org
ver 2.2.10
MySQL

PHP bardzo dobrze współpracuje z serwerem
baz danych MySQL

Pakiet MySQL można pobrać z witryny pod
adresem http://www.mysql.com
Aby odróżnić kod PHP od innych
elementów na stronie WWW

Musimy oznaczyć kod PHP stosując:



Znaczniki domyślne <?php print „ty”;?>
Znaczniki skrócone <? print „ty”;?>
Znaczniki skryptowe:
<script language=„php”>
print „ty”;
</script>

Znaczniki ASP (Active Server Pages)

<% print „ty”; %> lub
Zagnieżdżanie

PHP pozwala na zagnieżdżanie wielu skryptów
w różnych miejscach strony internetowej, jak i na
zagnieżdżanie kodu HTML wewnątrz instrukcji
print (echo).
Prosty przykład zastosowania PHP

Do paska tytułu i nie tylko można dodać
aktualną datę:
<title>
<?php print date(„m.d.y”);?>
</title>
spowoduje wyświetlenie daty w pasku tytułu.
Komentarze

Jednowierszowy, podobnie jak w C i JavaScript
//
lub
#

Wielowierszowy:
/* przykład komentarza
wielowierszowego */
Zmienne w php

Nie musimy deklarować typu zmiennej
<?php
$nazwa = 1; // Zmiennej "nazwa" przypisywana jest wartość liczbowa 1
$druga_nazwa = "Tekst";
$trzecia_nazwa = $nazwa;
echo "To jest $druga_nazwa"; // Powinien wyświetlić się napis "To jest Tekst"
echo '$druga_nazwa'; // Powinien wyświetlić się napis "$druga_nazwa"
echo $nazwa; // Powinna wyświetlić się cyfra 1
?>
Typy danych






Liczby całkowite
Liczby rzeczywiste (zmiennopozycyjne)
Ciągi znakowe, w tym pojedyncze znaki - nie ma
typu char
Tablice i wektory
Obiekty
True, false (boolean)
Liczby
<?php




?>
$a = 1234; # liczba dziesiętna
$a = -123; # liczba ujemna
$a = 0123; # liczba ósemkowa (równoznaczne z d
ziesiętnym 83)
$a = 0x12; # liczba szesnastkowa (równoznaczne
z dziesiętnym 18)
Zmiana typu
<?php
$blah = "0"; // $blah jest ciągiem (ASCII 48)
$blah++;
// $blah jest ciągiem "1" (ASCII 49)
$blah += 1; // $blah jest teraz wartością całkowitą (2)
$blah = $foo + 1.3; // $blah jest wartością rzeczywistą (1.3)
$blah = 5 + "10 Malutkich Świnek";
// $blah jest wartością całkowitą (15)
$blah = 5 + "10 Małych Świń";
// $blah jest wartością całkowitą (15)
?>
Rzutowanie typów

Rzutowanie typów odbywa się przez podanie nowego typu w
nawiasie przed zmienną lub wartością, której typ chcemy zmienić.
<?php
$liczba_calkowita = 10;
$liczba_rzeczywista = (real) $liczba_calkowita;
?>

Dozwolone typy rzutowań
 (int), (integer) - rzutuj do typu całkowitego
 (real), (double), (float) - rzutuj do typu rzeczywistego
 (string) - rzutuj do ciągu
 (array) - rzutuj do tablicy
 (object) - rzutuj do obiektu
Rzutowanie typów

Drugim sposobem, trwałym, jest użycie funkcji settype.
Funkcja ta pobiera 2 argumenty. Pierwszym jest nazwa
zmiennej do ustalenia typu, a drugim ciąg określający
nowy typ zmiennej.
<?php
$zmienna = 10.3;
echo "$zmienna <br>"; // Wyświetlona wartość to "10.3"
settype($zmienna, "integer");
echo "$zmienna <br>"; // Wyświetlona wartość to "10"
?>
Operatory

Operatory są to najprościej mówiąc symbole, które służą
do operacji na zmiennych. Operatory dzielą się na
operatory arytmetyczne, które służą do operacji na
liczbach, operatory przypisania służące do
przypisywania zmiennym wartości, operatory operacji
bitowych, operatory porównania niezbędne do instrukcji
warunkowych, operator kontroli błędów, operator
wykonania służący do uruchamiania zewnętrznych
programów, operatory inkrementacji i dekrementacji,
operatory logiczne i operatory ciągu.
Operator ciągu

Operator ciągu (’.’ - kropka) służy do łączenia
kilku ciągów w jedną całość.
<?php
$zmienna1 = "Wartość zmiennej 'zmienna2' to";
$zmienna2 = 5;
echo $zmienna1." ".$zmienna2; // Powinno się wyświetli
// "Wartość zmiennej 'zmienna2' to 5"
?>
Operatory arytmetyczne





$a + $b;
$a - $b;
$a * $b;
$a / $b;
$a % $b;
Dodawanie Suma $a i $b.
Odejmowanie Różnica $a i $b.
Mnożenie Iloczyn $a i $b.
Dzielenie Iloraz $a i $b (bez reszty).
Modulo Reszta z dzielenia $a przez $b.
Operator przypisania


Podstawowym operatorem przypisania jest
symbol ‘=’. Oczywiście nie oznacza on ‘jest
równe’.
Wyrażenie $b = 5 oznacza, że zmienna $b
przyjmuje wartość równą 5. Zmiennej można
przypisać także wartość innej zmiennej:


$b = 5;
$a = $b; - zmienna $a przyjmie wartość 5.
Operatory porównania
Przykład
Nazwa
Wynik
$a == $b
Równy
Prawda jeśli $a jest równe $b.
$a === $b
Identyczny
Prawda jeśli $a jest równe $b i są tego samego typu. (tylko PHP4)
$a != $b
Nie równe
Prawda jeśli $a nie jest równe $b.
$a !== $b
Nie identyczny
Prawda jeśli $a nie jest równe $b lub nie są tego samego typu. (tylko
PHP4)
$a < $b
Mniejsze
Prawda jeśli $a jest mniejsze niż $b.
$a > $b
Większe
Prawda jeśli $a jest większe niż $b.
$a <= $b
Mniejsze lub
równe
Prawda jeśli $a jest mniejsze lub równe $b.
$a >= $b
Większe lub
równe
Prawda jeśli $a jest większe lub równe $b.
Operator wywołania


Operator ten służy do uruchamiania
zewnętrznych programów lub poleceń powłoki.
Wystarczy wpisać polecenie pomiędzy znaki
odwróconego apostrofu (’`') aby zostało ono
wykonane.
Przykład: wyświetlenie zawartości katalogu
/home na serwerze
<?php
$wynik = `ls -l /home/`;
echo $wynik;
?>
Operatory inkrementacji i dekrementacji



Operatory te występują w większości języków
programowania. Służą one do zmniejszenia lub
zwiększenia wartości danej zmiennej o 1. Każdy
operator można stosować na 2 sposoby:
preinkrementacja/predekrementacja - najpierw
wartość zmiennej zostanie zmieniona, a później
zwrócona, lub
postinkrementacji/postdekrementacji - najpierw
zostanie zwrócona wartość zmiennej, a
następnie wartość zmiennej zostanie zmieniona.
Operatory inkrementacji i dekrementacji
Przykład
Nazwa
Wynik
++$a
Preinkrementacja
Zwiększa $a o jeden, a następnie zwraca $a.
$a++
Postinkrementacja
Zwraca $a, a następnie zwiększa $a o jeden.
–$a
Predekrementacja
Zmniejsza $a o jeden, po czym zwraca $a.
$a–
Postdekrementacja Zwraca $a, po czym zmniejsza $a o jeden.
Operatory inkrementacji i dekrementacji
<?php
<?php
echo "Postinkrementacja";
$a = 5;
echo "Powinno być 5: " . $a++ . "\n";
echo "Powinno być 6: " . $a . "\n";
echo "Postdekrementacja";
$a = 5;
echo "Powinno być 5: " . $a-- . "\n";
echo "Powinno być 4: " . $a . "\n";
echo "Preinkrementacja";
$a = 5;
echo "Powinno być 6: " . ++$a . "\n";
echo "Powinno być 6: " . $a . "\n";
?>
echo "Predekrementacja";
$a = 5;
echo "Powinno być 4: " . --$a . "\n";
echo "Powinno być 4: " . $a . "\n";
?>
Operatory logiczne

Operatory logiczne służą do budowania bardziej
skomplikowanych instrukcji warunkowych - do łączenia
kilku warunków w jednej instrukcji.
Przykład
Nazwa
Wynik
$a && $b
AND
Prawda, jeśli $a i $b są prawdą
$a || $b
OR
Prawda, jeśli $a lub $b są prawdą
! $a
NOT
Prawda, jeśli $a nie jest prawdą
Instrukcje warunkowe

Instrukcje warunkowe są podstawą każdego języka programowania.
Używa się jej do wykonania pewnej instrukcji (lub bloku instrukcji),
ale tylko w pewnych okolicznościach – wtedy gdy zostanie spełniony
określony warunek (lub cały zestaw warunków).
<?php
if(wyrażenie warunkowe)
instrukcja wykonywana jeśli spełniony zostanie warunek
elseif(inne_wyrażenie_warunkowe)
instrukcja wykonywana jeśli spełniony zostanie drugi warunek, a pierw
szy nie
else
instrukcja wykonywana jeśli nie zostanie spełniony żaden z warunków
?>
Instrukcje warunkowe
<?php
$a = 2;
$b = 5;
$c = 1;
if($a > $b)
echo "$a jest większe od $
b";
elseif ($b > $c)
echo "$b jest większe od $
c";
else
echo "$c jest większe od $
a i $b";
?>


Jeśli chcemy, aby po
sprawdzeniu warunku
wykonane zostało nie jedno,
ale kilka poleceń, to te
polecenia trzeba ująć w
nawiasy klamrowe. Bez tego
warunkiem objęta by była tylko
jedna instrukcja po instrukcji if.
Instrukcje mogą być
zagnieżdżane wewnątrz
siebie.
Instrukcje warunkowe - przykład
<?php
$a = 6;
$b = 5;
$c = 1;
if($a > $b)
{
echo "$a jest większe od $b";
if($a > $c)
echo " i od $c";
// Powinien zostać wyświetlony napis "6 jest większe od 5 i od 1"
}
?>
Pętla FOR

Czasem zachodzi
potrzeba wykonania
jakiejś czynności
określoną ilość razy. Z
pomocą przychodzi jedna
z najczęściej używanych
składni w większości
języków programowania,
czyli pętla FOR. Ogólny
zapis wygląda tak:
php
for( inicjalizacja zmiennych;
sprawdzenie warunku; modyfik
acja zmiennych)
{
blok wyrażeń
}
?>
<?
Przykład
<?php
for( $x = 1; $x <= 10; $x++ )

echo $x."<br>";
?>
Pętla while

Innym rodzajem pętli jest pętla WHILE. Jest ona
wykorzystywana w sytuacjach, kiedy niezbędne jest
wykonywanie jakiejś operacji dopóki nie zostanie
spełniony warunek.
<?php
while( warunek )
{
...
instrukcje
...
}
?>
Pętla while - przykład
<?php
$x=1;
while($x <= 10){
echo $x."<BR>";
$x++;
}
?>
Pętla do…while

Od zwykłej pętli while różni się ona tym, że polecenia zawarte w
pętli będą przynajmniej raz wykonane - w przypadku pętli while tak
być nie musi, to znaczy jeśli za pierwszym razem warunek nie
zostanie spełniony to polecenia z pętli nigdy nie zostaną wykonane.
W przypadku tej pętli zostano one wykonane przynajmniej ten
pierwszy raz.
<?php
do {
...
instrukcje
...
} while( warunek );
?>
Przerywanie wykonań pętli


Czasem zachodzi potrzeba przerwania danej iteracji (powtórzenia)
pętli i przejścia do następnej iteracji. Z pomocą wtedy przychodzi
instrukcja continue. Wystarczy wstawić ją w odpowiednie miejsce
wewnątrz pętli.
Wykonanie poniższego kodu spowoduje wyświetlenie liczb
nieparzystych
<?php
for($x = 1; $x<=100; $x++) {
if($x % 2 != 0)
continue;
echo $x." ";
}
?>
Składnia switch

Składnia switch jest
instrukcją warunkową, ale
jedną zmienną można
porównać nie z jedną
wartością, ale z kilkoma.
Niestety nie można
konstruować złożonych
warunków - możliwe jest
tylko proste
porównywanie
(równoważne instrukcji:
if($zmienna==”wartość”)
instrukcja).
php
switch($zmienna){
case 'wartość1':
...
instrukcje
...
break;
case 'wartość2':
...
instrukcje
...
break;
default:
...
instrukcje
...
<?
}
?>
Tablice



Są bardzo specyficznym typem zmiennych - są
to, najprościej mówiąc, zmienne zawierające w
sobie uporządkowany zbiór zmiennych.
Do zmiennych tych uzyskuje się dostęp przez
liczbę w nawiasie kwadratowym podane
bezpośrednio po nazwie zmiennej - tablicy.
Liczba ta to tak zwany indeks - numer kolejny
zmiennej w tablicy. Tak samo przypisuje się
wartość do tablicy.
Tablice
<?php
$tablica[0] = "Wpis numer 0";
$tablice[1] = "Wpis numer 1";
$tablica[2] = "Wpis numer 2";
echo $tablica[2];
// Wyświetlony zostanie napis "Wpis numer 2";
?>
Tablice


Aby dodać kolejny wpis na końcu tabeli
wystarczy przy przypisywaniu wartości nie
wpisywać indeksu do nawiasów kwadratowych.
Jeśli w ten sposób dodawane są wpisy do nowej
tablicy, to pierwszy wpis ma indeks 0.
Indeks można też podawać ze zmiennej, z innej
tablicy czy funkcji - z dowolnego wyrażenia
zwracającego wartość.
Tablice
<?php
$tab1[] = 1;
$tab1[] = 0;
$tab1[] = 3;
$tab1[] = 2;
$tab2[] = "Pierwszy";
$tab2[] = "Drugi";
$tab2[] = "Trzeci";
$tab2[] = "Czwarty";
echo $tab2[$tab1[2]];
?>
Tablica asocjacyjna

W PHP występuje też inny rodzaj tablic, tak zwane
tablice asocjacyjne (zwane też czasem haszami hash table). Są to tablice, w których zamiast
indeksów liczbowych używa się identyfikatorów
znakowych (kluczy):
<?php
$tablica["imie"] = "Jan";
$tablica["nazwisko"] = "Kowalski";
$tablica["adres"] = "Polna 1";
echo $tablica["imie"]." ".$tablica["nazwisko"].", ul. ".$tablica["adres"]."n";
?>
Tablice w PHP
//przypisanie elementów tworząc tablice
asocjacyjne
$jezyki[„hiszpania”]=„hiszpański”
$jezyki[„turcja”]=„turecki”
//lub za pomocą funkcji array()
$jezyki=array(„hiszpania”=>”hiszpański”,
„usa”=>”angielski”,
„niemcy”=>”niemiecki”);
Przeglądanie tablic

Bardzo często zachodzi
potrzeba wykonania
jakiejś operacji na
wszystkich elementach
tablicy. Sprawa jest
prosta jeśli tablica jest
zwykłą tablicą z
indeksami liczbowymi i
znamy ilość tych
elementów:
<?php
$tbl[] = 1;
$tbl[] = 2;
$tbl[] = 3;
$tbl[] = 4;
$tbl[] = 5;
for( $x = 0; $x < 5; $x++ )
{
// Pętla wykona się 5 razy (0...4)
echo $tbl[$x];
}
?>
Przeglądanie tablic


Sprawa się trochę komplikuje jeśli nie znamy
ilości elementów tablicy.
Wtedy możemy użyć funkcji:


count( $nazwa_tablicy ).
Zwraca ona ilość elementów w tablicy podanej
jako parametr.
Przeglądanie tablic
<?php
$tbl[] = 1;
$tbl[] = 2;
$tbl[] = 3;
$tbl[] = 4;
$tbl[] = 5;
for( $x = 0, $cnt = count($tbl); $x < $cnt; $x++ )
{
echo $tbl[$x];
}
?>
Przeglądanie tablic asocjacyjnych

W tym przypadku należy skorzystać z funkcji list() i
each().
<?php
$tablica["imie"] = "Jan";
$tablica["nazwisko"] = "Kowalski";
$tablica["adres"] = "Polna 1";
while( list($klucz, $wartosc) = each($tablica) )
echo "$klucz => $wartosc<BR>";
?>
Formularze – tworzenie zmiennych.

Jeśli użytkownik musi podać jakieś dane (np. w celu
dodania ich do bazy danych), to jedyną metodą jest
pobranie ich ze standardowego formularza HTML. W
większości języków programowania należy używać
dodatkowych bibliotek aby uzyskać dostęp do danych
przesyłanych z formularza. W PHP zostało to
maksymalnie uproszczone. Wszystkie dane z formularza
trafiają do odpowiednich tablic asocjacyjnych o nazwach
kluczy takich, jak nazwy pól formularza. Jeśli w
konfiguracji PHP włączona zostanie opcja
register_globals (jest ona domyślnie wyłączona od wersji
4.2.0), to stworzone zostaną od razu zmienne o
nazwach takich jak nazwy pól formularza.
Metody przekazywania parametrów do innych
stron


metoda “GET”
metoda “POST”.




Metody GET używa się kiedy parametrów jest niewiele.
Dzieje się tak ponieważ parametry przekazuje się za
pomocą adresu URL (np.
http://www.ab.pl/index.php?parametr1=wartość1&parametr
2=wartość2),
Ograniczona długość.
Parametry są widoczne w pasku adresu przeglądarki, więc
tej metody nie należy używać jeśli przekazywane są np.
hasła.
Adres od parametrów oddzielany jest za pomocą znaku
zapytania, a kolejne pary parametr=wartość za pomocą
znaku ampersand (”&”).
Metoda “POST”


Do przekazywania parametrów wykorzystuje
nagłówek zapytania
Wystarczy wiedzieć, że metoda ta umożliwia
przekazywanie dużo więcej parametrów, a także
że parametrów nie widać w pasku przeglądarki.
Zapisywanie zmiennych




Zależnie od metody, zmienne trafiają do odpowiednich
tablic asocjacyjnych.
Dane przesłane metodą GET trafiają do tablicy $_GET
(lub $HTTP_GET_VARS w wersjach starszych niż 4.1.0)
Dane z metody POST to tablicy $_POST (lub
$HTTP_POST_VARS).
Tablice $_GET i $_POST są superglobalne. Oznacza to,
że są widoczne w każdym miejscu kodu PHP bez
konieczności użycia składni globals.
Odczytywanie wartości z formularza
<html>
<head>
<title>
Test formularza
</title>
</head>
<body>
<form action="dwa.php" method="GET">
Imię: <input type=text name="imie"/><br/
>
Nazwisko: <input type=text name="nazwi
sko"/><br/>
Proszę o fakturę do zamówienia: <input t
ype=checkbox name="faktura"/><br/>
</html>
Chcę zamówić:<br/>
<input type=radio name=zamow value="k
ola"/>Coca-colę<br>
<input type=radio name=zamow value="f
anta"/>Fantę<br>
<input type=radio name=zamow value="s
prite"/>Sprite'a<br>
<input type=submit value="Wyślij"/>
</form>
</body>
Odczytywanie wartości z formularza
<html>
<head>
<title>
Wyniki
</title>
</head>
<body>
Imię: <?php echo $_GET['imie']?><b
r>
Nazwisko: <?php echo $_GET['naz
wisko']?><br>
Faktura: <?php echo ($_GET['faktur
a'] == 'on' ? 'Tak' : 'Nie')?><br>
Zamówienie: <?php switch($_GET['z
amow']){
case "kola":
echo "Coca-cola";
break;
case "fanta":
echo "Fanta";
break;
case "sprite":
echo "Sprite";
break;
}
?>
</body>
</html>
Funkcje

Dużo predefiniowanych funkcji PHP można
znaleźć na stronie internetowej
http://www.php.net



echo
print
Funkcje, które nie zwracają wyniku nazywa się
procedurami, podobnie jak w Turbo Pascalu.
Funkcja




Jest kawałkiem kodu, który można wywołać podając jej
nazwę.
Już wcześniej podane zostało kilka funkcji
dostarczanych przez PHP, takich jak array(), each(),
list(),
Funkcje rozpoznaje się po nawiasach występujących po
ich nazwie. W nawiasach tych (jeśli funkcja tego
wymaga) podaje się parametry dla danej funkcji.
Niektóre funkcje zwracają jakąś wartość, a więc
wywołanie takiej funkcji można wstawić jak dowolne inne
wyrażenie do listy parametrów innej funkcji czy np. do
obliczenia.
Definicja Funkcji
<?php
function suma($parametr1 = 0, $parametr2 = 0)
{
$wartosc = $parametr1 + $parametr2;
return $wartosc;
}
?>
Funkcje – c.d.




Definiowana funkcja o nazwie suma służy do obliczania sumy
dwóch wyrażeń podawanych jako parametry (kolejne parametry
oddziela się przecinkiem).
W przypadku pominięcia któregoś z parametrów przypisana mu
będzie wartość 0 - dzieje się tak dzięki zaznaczeniu ” = 0″ po
określeniu nazwy parametru w definicji funkcji (nie jest to
konieczne).
Z parametrów funkcji można korzystać jak z dowolnej innej
zmiennej, ale oczywiście tylko wewnątrz tej funkcji. Wewnątrz funkcji
dostępne są tylko zmienne w niej definiowane i parametry.
Do określania co jest zwracane przez funkcję służy instrukcja
return. Może ona być wywołana w dowolnym miejscu funkcji - po
dojściu do tej instrukcji kończy się wykonanie funkcji.
Funkcje – c.d.

Funkcja może nie zwracać żadnych wartości.
Taka funkcja przydaje się jeśli często
powtarzany jest jakiś fragment kodu. Taka
funkcja kończy swoje wykonanie po dojściu do
końca jej definicji lub instrukcji return (tym razem
wywoływanej bez parametru, ponieważ funkcja
nie zwraca żadnych wartości).
Funkcje – c.d.



Funkcje w PHP nie mogą być ponownie
definiowane.
Mogą być definiowane w zasadzie w dowolnym
miejscu kodu.
Wewnątrz funkcji znajdować się może dowolny,
prawidłowy pod względem składniowym kod nawet definicje innych funkcji.
Zasięg zmiennych
Zmienne w funkcjach
Kiedy zmienna jest zadeklarowana poza funkcją, jej wartość nie będzie
widoczna w funkcji. Ilustruje to przykład:
$c=5;
Function f()
{
echo($c);
}
f();
Zmienne globalne
Żeby zmienna globalna (w tym wypadku $c) była widoczna
wewnątrz funkcji, należy użyć polecenia global:
$c=5;
Function f()
{
global $c;
echo($c);
}
f();
Przekazywanie parametrów do i z funkcji
//dodać 5 do zmiennej przekazanej
function dodaj5 ($przekazana)
{
$przekazana+=5;
return $przekazana;
}
//do zmiennej przekazanej w wywołaniu zostanie
dodane 5 i zwrócone jako rezultat działania
funkcji
Zmienna wewnątrz funkcji
Jeżeli stworzy się zmienną wewnątrz funkcji, to jej wartość będzie za
każdym wywołaniem ustawiana od początku:
Function f()
{
$b=2;
echo($b);
$b++;
}
f(); f();
Wykonanie tego kodu spowoduje pojawienie się dwa razy tego
samego.
Po zakończeniu funkcji zmienna static nie
traci wartości

Jeżeli chce się, żeby zmienna nie traciła wartości po zakończeniu
funkcji, to należy użyć polecenia static:
Function f()
{
static $d=2;
echo($d);
$d++;
}
f(); f();

Teraz pojawi się najpierw liczba 2, potem 3.
Definiowanie stałych
<?
Define(„stala_pi”,”3.14”); jakiego typu?
//odwołanie do stałej
echo stala_pi.„<br><hr>”;
?>
Zwracanie wartości funkcji
<? $cena_netto=100;
$VAT=22;
//funkcja obliczająca cenę brutto z VATem
function oblicz_brutto($cena_netto,$VAT)
{
$cena_netto=$cena_netto+$cena_netto*$VAT/100;
return $cena_netto;
}
//wywołanie funkcji
$do_zaplacenia=oblicz_brutto($cena_netto,$VAT);
//zaokrąglenie wyniku do 2 miejsc po przecinku
$do_zaplacenia=round($do_zaplacenia,2);
echo „do zapłacenia=„.$do_zaplacenia.”<BR><HR>”;
?>
Funkcja może zwracać wiele wartości w
postaci tablicy
$wino=„bordeaux”
function najlepsze_roczniki($wino)
{
$california=array(1989,1992,1994);
$bordeaux=array(1992,1997,1998);
return $$wino //zwraca zmienną zmiennej $$
}
//do wyświetlania listy użyto list()
list($pierw,$drugi,$trzeci)=najlepsze_roczniki(
$wino);
echo
„najlepsze
roczniki
wina
$wino
to:
$pierw,$drugi,$trzeci”;
Funkcje rekurencyjne


Jest to wielokrotne wywołanie funkcji przez
samą siebie w przypadku spełnienia warunku.
Szczególnie przydatne w przypadku np.
renderowania grafiki lub pracy z fraktalami.
Funkcje rekurencyjne
//iloczyn liczb całkowitych - funkcja
wywołuje samą siebie
function iloczyn($zmienna)
{
if($zmienna!=0)
{return $zmienna*iloczyn($zmienna-1);}
}
//wywołanie
$zmienna2=iloczyn(4)
Funkcje zmienne


Funkcja zmienna to inaczej dynamiczne
wywołanie funkcji w zależności od wartości
zmiennej.
PHP obsługuje koncepcję zmiennych funkcji.
Oznacza to, że jeśli po nazwie zmiennej
występują nawiasy, PHP będzie szukało funkcji
o nazwie będącej wartością zmiennej i będzie
próbowało wywołać ją.
Funkcje zmienne - przykład
//komunikat po polsku
function polski()
{echo ”Witaj przyjacielu na mojej stronie”;}
function angielski()
{echo „Welcome my friend to my Web page”; }
//wybieramy język
$jezyk=„polski”;
//wywołujemy funkcję
$jezyk();
Funkcje używane w czasie operacji z
tablicami
list() - do pobierania wartości z tablicy
wielu zmiennych. Działa podobnie jak
array()
range() - pozwala na wypełnienie tablicy
wartościami o podanym zakresie np.
$tablica1=range(2,6);
//odpowiada $tablica1=array(2,3,4,5,6);
$szachownica[0][1]=„pionek”
Funkcje używane w czasie operacji z
tablicami 2

in_array() - umożliwia sprawdzenie, czy w
tablicy istnieje dany element. np.:
$jezyki = array („angielski”,”polski”,”niemiecki”);
$czy_jest=in_array(„polski”,$jezyki);
//zwróci $true(prawda)
//przykład użycia z instrukcją warunkową if
if(in_array(„polski”,$jezyki))
{zrob_cos_1_procedura();
zrob_cos_2_procedura(); };
//jeśli true to np. przekieruje do strony po polsku
Funkcje używane w czasie operacji z
tablicami 3



Tablice w PHP mogą być poszerzane, lub
zmniejszane dynamicznie.
Podobnie jak w kolejce w PHP można pobierać
pierwszy element lub dodawać na początek
kolejki
Podobnie jak na stosie można dodawać
elementy tablicy lub je zdejmować. Jest to tak,
jak z zabawką w nakładanie drewnianych
krążków na patyk od największego do
najmniejszego. Aby je zdjąć trzeba zacząć od
ostatnio nałożonego.
Funkcje używane w czasie operacji z
tablicami 4

array_push() - służy do dodawania na końcu
tablicy elementu

array_pop() – służy do zdejmowania z tablicy
jednego elementu, który podstawiany jest za
dowolną zmienną.
Funkcje używane w czasie operacji z
tablicami 5



Funkcja array_shift()
Jest ona podobna do array_pop(), tylko że
usuwa elementy z początku tablicy i zwraca
jako zmienną
array_unshift() dodaje element do początku
tablicy (jako pierwszy wyraz)
Funkcje używane w czasie operacji z
tablicami 6


array_pad(nazwa_tablicy, nowy_rozmiar,
wartosc_jakom_wypelnimy_tablice)
nowy_rozmiar określa nam nowy rozmiar tablicy po
przedłużeniu. Jeżeli tablica miała 4 elementy, a teraz
za tą wartość wstawimy 10, to nowa tablica będzie
miała 10 elementów, a wartości elementów
dodatkowych będą te same, takie jak trzeci parametr.
Jeżeli drugi parametr będzie ujemny, to nowe
wartości zostaną dodane do początku tablicy.
Funkcje używane w czasie operacji z
tablicami 7 - przykład
<?php
$wejscie = array(12, 10, 9);
$wynik = array_pad($wejscie, 5, 0);
// wynik to array(12, 10, 9, 0, 0)
$wynik = array_pad($wejscie, -7, -1);
// wynik to array(-1, -1, -1, -1, 12, 10, 9)
$wynik = array_pad($wejscie, 2, "noop");
// nie ma dopełniania
?>
Funkcje używane w czasie operacji z
tablicami 8


Do przechodzenia między elementami tablicy
służą:
funkcja reset() przenosi wskaźnik do
pierwszego elementu i zwraca element
$zmienna=reset($tablica);

może też być wywołana bez podstawienia
reset($tablica);
Funkcje używane w czasie operacji z
tablicami 9



Funkcja end($tablica) przenosi wskaźnik do
ostatniego elementu tablicy.
Funkcja next($tablica) przesuwa wskaźnik o
1 (zwieksza wskaźnik o 1). Jeżeli będziemy
na końcu tablicy zwróci wartość logiczną false
funkcja prev($tablica) przesuwa wskaźnik o
jedną pozycję w lewo i zwróci wartość false,
kiedy będziemy na początku tablicy
Funkcje używane w czasie operacji z
tablicami 10

Funkcja array_walk($tablica,”funkcja”)
powoduje wykonanie operacji na tablicy $tablica
zdefiniowanych w „funkcji”
Funkcje używane w czasie operacji z
tablicami 11


Funkcja array_reverse($tablica) - odwraca
dokładnie na odwrót kolejność elementów tablicy.
Funkcja array_flip($tablica) zamienia klucze na
elementy tablicy, a elementy na klucze. To znaczy,
jeżeli tablica była indeksowana liczbami 0...20, a
miała wartości typu string np. „masło”, „chleb”... To
te liczby indeksów będą elementami tablicy, a
indeksami będą wartości typu string i przez ich
podanie będziemy odwoływać się do
poszczególnych elementów tablicy.
Funkcje używane w czasie operacji z
tablicami 12

sizeof($tablica) - funkcja zwraca wielkość
tablicy

count($tablica) - również zwraca liczbę
elementów tablicy.
Funkcje używane w czasie operacji z
tablicami 13

Do sortowania tablic używamy kilku funkcji


sort($tablica) sortuje wszystkie elementy od
najniższego do najwyższego. Wartości typu string
od A do Z.
Funkcja rsort($tablica) sortuje wszystkie
elementy na odwrót do sort()
Funkcje używane w czasie operacji z
tablicami 14

Jeżeli tablica indeksowana jest kluczami w
postaci string, a nie liczbami, to sortowanie
odbywa się według kluczy tablicy od A do Z tzn

ksort($tablica) spowoduje wysunięcie naprzód
elementu $tablica[„AAAA”] przed element
$tablica[„BBBB”]
Funkcje używane w czasie operacji z
tablicami 15

Funkcja krsort($tablica) sortuje tablicę według
indeksów-klucza, ale w odwrotnej kolejności.

Funkcja usort($tablica,funkcja) sortuje tablicę
według własnych kryteriów zadanych przez
funkcję, w której określono mechanizm
sortowania.
Funkcje używane w czasie operacji z
tablicami 16


Funkcja
array_merge($tablica1,$tablica2,....,$tablicaN) łączy
ze sobą tablice od 1 do N)
Funkcja
array_slice($tablica,ktory,dlugosc) wycina z tablicy
fragment odpowiadający liczbie elementów, określonej
parametrem dlugosc od elementu ktory.


Jeżeli ktory jest dodatni to liczymy pierwszy do wycięcia od
początku, a jeżeli ktory jest ujemny to od konca
Funkcja wytnie tyle elementów, ile wskazuje zmienna
(liczba) dlugosc. Wszystkie tnie na prawo.
Funkcje używane w czasie operacji z
tablicami 17

Funkcja array_splice() działa podobnie do
array_slice, tylko że zastępuje dodatkowo
wycięte elementy elementami z innej tablicy.

Funkcja shuffle() sortuje elementy tablicy w
przypadkowej kolejności (indeksy ustawia
random)
Operacje wejścia-wyjścia i system plików.


Operacje na plikach są szczególnie ważne w
PHP. Umożliwiają one wprowadzanie i
wyprowadzanie danych. Można także
wywoływać programy zewnętrzne, a nawet
modyfikować informacje o serwerze.
Jeżeli korzystamy z serwera baz danych MySQL
niekoniecznie musimy używać funkcji wejściawyjścia.
Operacje wejścia-wyjścia i
system plików 2



Funkcja file_exist($plik) zwraca true jeżeli plik
o nazwie $plik istnieje
Funkcja is_file($plik) zwraca prawdę, ale
tylko gdy plik istnieje i można z niego
odczytywać oraz zapisywać do niego
informacje (gdy plik jest -rw).
Funkcja filesize($plik) zwraca wielkość pliku
w bajtach lub fałsz gdy taki plik nie istnieje.
Operacje wejścia-wyjścia i system plików 3



Otwieranie i zamykanie plików - funkcja
fopen($plik,$tryb)
$tryb=r, w, w+ (utworzenie nowego pliku), A
(append), a+ (odczyt i append)
fclose($zm_plikowa)
Operacje z plikami 4
<?
$file=„dane.txt”;
if(file_exists($file)):
$zm_plikowa=fopen($file,”w+”);
//operacje na pliku
fclose($zm_plikowa);
else:
print „nie ma pliku $file”;
endif;
?>
Zapisywanie danych do pliku
Funkcja is_writeable(string plik) sprawdza
możliwość zapisywania danych do pliku i do
katalogu
 funkcja fwrite() zapisuje dane do pliku
 składnia
fwrite($zm_plikowa,$dane);
 zamiennie można używać fputs() - alias

Przykład zapisania danych do pliku
<? $dane="234,123,789,988,12,88";
$zm_plikowa="dane.txt";
if(is_writeable($zm_plikowa))
{
$pl_otw=fopen($zm_plikowa, "w+");
$zapisane=fwrite($pl_otw,$dane);
$fclose($pl_otw);
}
else print "nie da się otworzyć pliku do zapisu";
?>
Odczytywanie danych z pliku



Funkcja is_readable() analogicznie sprawdza,
czy możliwe jest otwarcie danego pliku do
odczytu
funkcja fread($zm_plikowa,$dl_ciagu_znakow)
służy do odczytywania ciągu znaków. Pobierany
jest ciąg o określonej długości.
Przykład odczytywania danych z pliku
<?
$zm_plikowa=fopen('dane.txt',"r") or die("Nie ma pliku");
$dane_z_pliku=fread($zm_plikowa,filesize($zm_plikowa);
//czyta cały plik
print $dane_z_pliku;
fclose($zm_plikowa);
?>
Odczytywanie danych z pliku 2


Do odczytywania pojedyńczych znaków służy
funkcja fgetc($zm_plikowa)
do odczytywania ciągów znakowych podobnie
jak fread() jest funkcja fgets($zm_plikowa,234),
gdzie 234 to liczba bądź zmienna, określająca
długość wczytywanego ciągu znaków
Odczytywanie danych z pliku 3


Podobna do fgets() jest funkcja
fgetss($zm_plikowa,234), gdzie 234 to liczba
bądź zmienna, określająca długość
wczytywanego ciągu znaków
Jest jednak bardziej użyteczną funkcją do
odczytywania informacji ze stron HTML i
programów PHP, ponieważ podczas
wczytywania plików usuwa wszystkie
znaczniki.
Fgetc() przykład
<?
$zm_plikowa=fopen('dane.txt',"r") or die("Nie ma pliku");
while(!feof($zm_plikowa))
{
$znak=fgetc($zm_plikowa);
//czyta 1 znak
print $znak;
}
fclose($zm_plikowa);
?>
Funkcja file()

Funkcja file służy do pobierania z pliku
łańcuchów tekstowych linia po linii.

Wywołanie
$tablica=file('dane.txt');

powoduje wczytanie do tablicy $tablica
poszczególnych linii z pliku dane.txt, tak że
pierwsza linia to $tablica[0], druga linia
$tablica[1], trzecia $tablica[2].....itd.
Uruchamianie programów na serwerze


Czasami jest potrzeba zdalnego uruchomienia
programu, który znajduje się na serwerze. Jest
to szczególnie przydatne przy zarządzaniu
systemem przez sieć, zdalnym zamykaniu
systemu.
Komunikaty wykonującego się programu idące
do okna systemowego wgrywane są do tablicy
wierszami
Przykład wywoływania programów i poleceń
systemowych


Polecenie umieszczamy w odwróconych
apostrofach (klawisz odwróconego apostrofu
jest z lewej obok klawisza 1)
przykład:
$output=`dir`
print $output. "<BR>"
Pliki na serwerze


PHP oferuje funkcje do modyfikowania i
przeglądania plików na serwerze.
Możemy uzyskać takie informacje, jak:




lokalizacja,
właściciel,
prawa dostępu,
wielkość pliku itp.
basename()

Funkcja basename dostarcza informacji o
nazwie pliku o podanej ścieżce
Przykład:
$plik=basename("c:\FoxServ\www\index.php);
//spowoduje to podstawienie index.php za $plik
stat()

Podaje różne informacje o pliku ładując je do
tablicy indeksowanej od 0 do 12.
Przykład:
$tab=stat($plik);
$tab[7]

podaje informacje o długości pliku w bajtach.
chmod()
chmod($file,$dostep)
zmienia tryb pliku


$file – zmienna określająca plik,
$dostep - to zmienna typu int ale musi być
podana ósemkowo np. 0600 – określa rodzaj
dostępu do pliku – tylko właściciel ma prawo do
odczytu i zapisu
fileperms()
fileperms($plik);
zwraca prawa dostępu do pliku określonego w
zmiennej $plik, lub fałsz w razie wystąpienia błędu
chown()

Nazwa pochodzi od skrótu change owner.
chown($plik,$user);


$user oznacza nowego użytkownika.
Tylko uprzywilejowany użytkownik może zmienić
właściciela pliku.
fileowner()

Funkcja ta zwraca ID użytkownika, który jest
właścicielem pliku.
Przykład:
$id=fileowner($plik)
Kopiowanie i zmiana nazw plików
copy($plik1,$plik2)
kopiuje plik źródłowy plik1 do pliku docelowego plik2

$plikx są typu string
rename($plik1,$plik2)
zmienia nazwę z $plik1 na $plik2
Usuwanie plików

W innych niż Windows systemach powinna
działać funkcja
unlink($plik);

W Windows lepiej zastosować wywołanie
polecenia systemowego:
system("del nazwa_pliku.txt");
Praca z folderami
is_dir($katalog)
sprawdza, czy istnieje katalog o nazwie podanej w
zmiennej $katalog.
mkdir($sciezka,$uprawnienia);
zakłada katalog określony w zmiennej $sciezka
$uprawnienia są typu int
Praca z folderami 2
readdir($katalog);
zwraca wszystkie elementy katalogu w postaci
string
$katalog=opendir($sciezka);
potem closedir($katalog);
PHP a bazy danych
<?php
$hostname_localhost = "localhost";
$database_localhost = „aaaaaaa";
$username_localhost = „username";
$password_localhost = „**********";
$polaczenie = mysql_pconnect($hostname_localhost,
$username_localhost, $password_localhost)
or die(mysql_error());
?>
PHP a baza danych
<?php require_once('Connections/localhost_conection.php'); ?>
mysql_select_db($database_localhost, $localhost);
$query_Pracownicy_sz = "SELECT * FROM pracownicy WHERE ID =
'$id_n' ";
$Pracownicy_sz = mysql_query($query_Pracownicy_sz,
$localhost_kf1) or die(mysql_error());
$row_Pracownicy_sz = mysql_fetch_assoc($Pracownicy_sz);
$totalRows_Pracownicy_sz = mysql_num_rows($Pracownicy_sz);
?>
PHP a bazy danych
<?php echo $row_Pracownicy_sz['Stopien']; ?>
$mail= "mailto:".$row_Pracownicy_sz['e_mail'];
echo "<a href=\"".$mail."\">"."wyślij
wiadomość"."</a>";
?>