Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Technologie internetowe II Wykład 2 – Funkcje, Obiekty Dr Krzysztof Heller.

Podobne prezentacje


Prezentacja na temat: "Technologie internetowe II Wykład 2 – Funkcje, Obiekty Dr Krzysztof Heller."— Zapis prezentacji:

1 Technologie internetowe II Wykład 2 – Funkcje, Obiekty Dr Krzysztof Heller

2 17-10-2009Technologie internetowe II2 Literatura Meloni J.C.: PHP, MySQL i Apache dla każdego. Wydanie III, Helion, 2007 Lis M.: PHP i MySQL dla każdego, Helion, 2005 Leszek 'leon' Krupiński: Wykłady internetowe, 2007 http://docs.wsei.pl/dydaktyka/Techn_Intern et_II_wyklad2.ppthttp://docs.wsei.pl/dydaktyka/Techn_Intern et_II_wyklad2.ppt

3 17-10-2009Technologie internetowe II3 Plan wykładu 2 Wywoływanie funkcji, zasięg zmiennych. Definiowanie funkcji, postać i sposoby przekazywania argumentów, zwracanie wartości przez funkcję. Obiekty.

4 Funkcje

5 17-10-2009Technologie internetowe II5 Definicja funkcji Funkcja przetwarza dane wejściowe zwracając dane wyjściowe. Funkcję wywołuje się podając jej nazwę, wykonuje wówczas zawarty w niej kod. Funkcje rozpoznaje się po nawiasach występujących po ich nazwie. W nawiasach podaje się parametry dla danej funkcji (opcjonalnie). 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. Funkcje sa wbudowane (jak array(), each(), list(), explode() czy implode()) lub zdefiniowane przez programistę.

6 17-10-2009Technologie internetowe II6 Składnia function nazwa_funkcji ($argument1, $argument2) { // treść funkcji }

7 17-10-2009Technologie internetowe II7 Przykładowa funkcja 1 <?php function duzeczesc() { echo " CZEŚĆ! "; } duzeczesc(); ?>

8 17-10-2009Technologie internetowe II8 Opis funkcji Przykładowa funkcja 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 - dzięki zaznaczeniu " = 0" po określeniu nazwy parametru w definicji funkcji. Takie podstawienie nie jest konieczne. Z parametrów funkcji można korzystać jak z dowolnej innej zmiennej. Wewnątrz funkcji dostępne są tylko zmienne w niej definiowane i parametry.

9 17-10-2009Technologie internetowe II9 Opis funkcji (2) Do określania co jest zwracane przez funkcję służy instrukcja return. Instrukcja return może być wywołana w dowolnym miejscu funkcji - po dojściu do tej instrukcji kończy się wykonanie funkcji. 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. Funkcje w PHP nie mogą być ponownie definiowane. Mogą być definiowane w dowolnym miejscu kodu. Wewnątrz funkcji znajdować się może dowolny, prawidłowy pod względem składniowym kod - nawet definicje innych funkcji czy klas.

10 17-10-2009Technologie internetowe II10 Przykładowa funkcja 2 <?php function suma($parametr1 = 0, $parametr2 = 0) { $wartosc = $parametr1 + $parametr2; return $wartosc; } ?>

11 17-10-2009Technologie internetowe II11 Przykładowa funkcja 3 <?php function font($tekst, $wielkosc = 3) { echo " $tekst "; } font("Nagłówek ", 5); font("pewien tekst "); font("więcej tekstu "); font("jeszcze więcej tekstu "); ?>

12 17-10-2009Technologie internetowe II12 Zasięg zmiennych Zmienna zdeklarowana w obrębie funkcji staje się zmienną lokalną dla tej funkcji Zmienna zdeklarowana na zewnątrz funkcji nie będzie widoczna w jej wnętrzu. Z wnętrza funkcji nie można bezpośrednio odwoływać się do zmiennych zdefiniowanych w innych częściach skryptu. Instrukcja gobal służy do dostępu do zmiennej bez przekazywania jej jako argument. Operacje wewnątrz funkcji na zmiennej zdefiniowanej jako global skutkują zmiana tej zmiennej.

13 17-10-2009Technologie internetowe II13 Tablice globalne i superglobalne W każdym miejscu kodu dostępna jest tablica asocjacyjna $GLOBALS, której kluczami są nazwy zmiennych dostępnych w zasięgu głównym. W PHP 4.1.0 sa tak zwane tablice superglobalne. Użytkownik nie może samemu tworzyć takich tablic. Zawierają one dane przekazywane do PHP metodami GET, POST, informacje o przekazanych plikach, dane z ciasteczek i sesji - odpowiedno $_GET, $_POST, $_FILES, $_COOKIE, $_SESSION. Mają one zastąpić tablice $HTTP_*_VARS, które ze względu na kompatybilność są jeszcze obecne. Tablice superglobalne dostępne są w dowolnym miejscu kodu, bez potrzeby użycia instrukcji global.

14 17-10-2009Technologie internetowe II14 Test zasięgu 1 <?php function test() { $zmiennatestowa = "to jest zmienna testowa"; } echo "zmienna testowa: $zmiennatestowa "; ?>

15 17-10-2009Technologie internetowe II15 Test zasięgu 2 <?php $zycie = 42; function sensZycia() { echo "Sens życia to $zycie"; } sensZycia(); ?>

16 17-10-2009Technologie internetowe II16 Test zasięgu 3 <?php $zycie = 42; function sensZycia() { global $zycie; echo "Sens życia to $zycie";} sensZycia(); ?>

17 17-10-2009Technologie internetowe II17 Przechowanie wartości zmiennej pomiędzy wywołaniami Zmienne wewnątrz funkcji istnieją jedynie w trakcie jej wywoływania. Wartości tych zmiennych po zakończeniu wywołania funkcji nie istnieją, ponowne wywołanie nie pamięta poprzednich wartości. Można zdefiniować zmienne globalne (instrukcja global), ale musimy panować nad zmianami wartości tej zmiennej. Bezpieczne zapamiętanie wartości zmiennej odbywa się przez instrukcję static.

18 17-10-2009Technologie internetowe II18 Przykład przechowywania zmiennych 1 <?php $liczba_wywolan = 0; function numerowanyNaglowek($tekst) { global $liczba_wywolan; $liczba_wywolan++; echo " $liczba_wywolan. $tekst "; } numerowanyNaglowek("Jabłka"); echo " Bardzo dobre. "; numerowanyNaglowek("Gruszki"); echo " Naprawdę przepyszne. "; ?>

19 17-10-2009Technologie internetowe II19 Przykład przechowywania zmiennych 2 <?php function numerowanyNaglowek($tekst) { static $liczba_wywolan = 0; $liczba_wywolan++; echo " $liczba_wywolan. $tekst "; } numerowanyNaglowek("Jabłka"); echo " Bardzo dobre. "; numerowanyNaglowek("Gruszki"); echo " Naprawdę przepyszne. "; ?>

20 17-10-2009Technologie internetowe II20 Przekazywanie przez referencje Przy przekazywaniu argumentów funkcji w zmiennych umieszczane są kopie aktualnych wartości zmiennych. Ewentualne operacje na argumentach nie zostawiają śladu poza wnętrzem funkcji. Odwołanie przez referencją do oryginalnej zmiennej działa inaczej – zmienia wartość zmiennej, na którą wskazuje.

21 17-10-2009Technologie internetowe II21 Przykład – bez referencji <?php function dodajPiec($num) { $num += 5; } $orygnum = 10; dodajPiec($orygnum); echo $orygnum; ?>

22 17-10-2009Technologie internetowe II22 Przykład – z referencją <?php function dodajPiec(&$num) { $num += 5; } $orygnum = 10; dodajPiec($orygnum); echo $orygnum; ?>

23 17-10-2009Technologie internetowe II23 Istnienie funkcji Nie zawsze wiadomo, czy wywoływana funkcja istnieje. Aby sprawdzić istnienie funkcji używamy konstrukcji function_exists () Argumentem funkcji jest ciąg znaków określający nazwę funkcji. Funkcja zwraca true jeśli funkcja o podanej nazwie istnieje, w przeciwnym razie false.

24 17-10-2009Technologie internetowe II24 Przykład funkcji - podsumowanie <?php function znacznik($znacznik, $tekst, $funkcja=) { If ((!empty($tekst))&&(function_exists($funkcja))) { $tekst=$funkcja($tekst); return.$tekst. ; } else { return.$tekst. ; }} function podkresl ($tekst) { return.$tekst. ; }

25 17-10-2009Technologie internetowe II25 Przykład funkcji – podsumowanie (cd.) echo znacznik (b, pogrub mnie); echo znacznik (i, i mnie podkreśl, podkreśl); echo znacznik (i, pochyl mnie i zacytuj, create_function($tekst, return "$tekst&quot::)); ?>

26 Klasy i obiekty

27 17-10-2009Technologie internetowe II27 Klasy Klasy są ściśle związane z pojęciem obiektowych zasad pisania aplikacji. Obiekt, tak jak w rzeczywistości, posiada swoje właściwości i można z nim zrobić różne rzeczy. Klasa nie jest obiektem, ale jego definicją –klasą jest np. pojęcie kamień, ale nie jego konkretny egzemplarz –definicja klasy zawiera zmienne (właściwości obiektu) i funkcje (rzeczy, które można zrobić z tymi obiektami).

28 17-10-2009Technologie internetowe II28 Pojęcie obiektu Obiekt jest ucieleśnieniem pewnej klasy Obiekt charakteryzuje się własnościami Ponadto elementem składowym obiektu mogą być metody Metody operują na własnościach obiektu Klasa definiuje obiekt – jego cechy (własności) i metody Dzięki obiektom unikamy niepożądanego wpływania jednych części programu na drugie

29 17-10-2009Technologie internetowe II29 Tworzenie klasy Class NazwaKlasy { // tutaj wpisujemy definicje } $obiekt1 = new NazwaKlasy();

30 17-10-2009Technologie internetowe II30 Istnienie klasy <?php class mojaKlasa { // miejsce na kod} $obiekt1 = new mojaKlasa(); echo "\$obiekt1 jest typu ".gettype($obiekt1)." "; if (is_object($obiekt1)) { echo "Słowo honoru! \$obiekt1 jest naprawdę obiektem!"; } ?>

31 17-10-2009Technologie internetowe II31 Prosta klasa <?php class mojSamochod { var $kolor = "srebrny"; var $marka = "Mazda"; var $model = "Protege5";} $samochod = new mojSamochod(); echo "Jeżdżę samochodem ".$samochod- >marka." ".$samochod->model.", kolor ".$samochod->kolor; ?> własności obiektu

32 17-10-2009Technologie internetowe II32 Prosta klasa 2 <?php class mojSamochod { var $kolor; var $marka; var $model;} $samochod = new mojSamochod(); $samochod->kolor = "czerwony"; $samochod->marka = "Porsche"; $samochod->model = "Boxter"; echo "Jeżdżę samochodem ".$samochod->marka." ".$samochod->model.", kolor ".$samochod->kolor; ?> zmiana własności obiektu

33 17-10-2009Technologie internetowe II33 Metody obiektów Metoda umożliwia wykonywanie operacji wewnątrz klasy. Metoda wygląda i działa jak funkcja, lecz jest definiowana wewnątrz klasy. Metoda może korzystać z własności klasy. Zmienna $this odwołuje się do bieżącego egzemplarza obiektu. Własności można modyfikować wewnątrz metody. Oznacza to, że obiekt może zmieniać swoje właściwości.

34 17-10-2009Technologie internetowe II34 Klasa cześć <?php class mojaKlasa { function powiedzCzesc() { echo "CZEŚĆ!"; }} $obiekt1 = new mojaKlasa(); $obiekt1->powiedzCzesc(); ?>

35 17-10-2009Technologie internetowe II35 Klasa cześć <?php class mojaKlasa { var $imie = "Bolek"; function powiedzCzesc() { echo "CZEŚĆ! Nazywam się ".$this->imie; } } $obiekt1 = new mojaKlasa(); $obiekt1->powiedzCzesc(); ?> Operowanie na własnościach klasy z wnętrza metody

36 17-10-2009Technologie internetowe II36 Klasa cześć <?php class mojaKlasa { var $imie = "Bolek"; function ustawImie($i) { $this->imie = $i; } function powiedzCzesc() { echo "CZESĆ! Nazywam się ".$this->imie; }} $obiekt1 = new mojaKlasa(); $obiekt1->ustawImie("Ziuta"); $obiekt1->powiedzCzesc(); ?> zmiana wartości własności z wnętrza klasy

37 Dziedziczenie

38 17-10-2009Technologie internetowe II38 Konstruktor Kolejnym pojęciem z zakresu obiektowości jest konstruktor. Konstruktor jest to funkcja o takiej samej nazwie jak klasa. Konstruktor ustala początkowe wartości zmiennych (funkcja wywoływana jest automatycznie przy tworzeniu obiektu). Konstruktorowi można podać pewne wartości przy tworzeniu obiektu.

39 17-10-2009Technologie internetowe II39 Zasady działania na klasach Aby dostać się do zmiennej lub funkcji będącej składową klasy należy użyć operatora "->". Wewnątrz funkcji należącej do klasy zmienna $this oznacza właśnie ten obiekt - należy używać do chcąc odwołać się do zmiennej lub funkcji należącej do klasy. Dziedziczenie służy do tworzenia nowych klas na podstawie innych, rozszerzając ich możliwości. W PHP obiektowość jest bardzo uboga, tak więc i dziedziczenie jest bardzo uproszczone.

40 17-10-2009Technologie internetowe II40 Dziedziczenie <?php class mojaKlasa { var $imie = "Mateusz"; function mojaKlasa($i) { $this->imie = $i; } function powiedzCzesc() { echo "CZEŚĆ! Nazywam się ".$this->imie; }} class klasaPotomna extends mojaKlasa {// kod klasy} $obiekt1 = new klasaPotomna("Mały Bolek"); $obiekt1->powiedzCzesc(); ?> konstruktor ta klasa jest na razie pusta

41 17-10-2009Technologie internetowe II41 Dziedziczenie 2 <?php class mojaKlasa { var $imie = "Mateusz"; function mojaKlasa($i) { $this->imie = $i; } function powiedzCzesc() { echo "CZEŚĆ! Nazywam się ".$this->imie; }} class klasaPotomna extends mojaKlasa { function powiedzCzesc() { echo "Nie podam swojego imienia"; }} $obiekt1 = new klasaPotomna("Mały Bolek"); $obiekt1->powiedzCzesc(); ?> zdefiniowana nowa funkcja powiedzCzesc

42 17-10-2009Technologie internetowe II42 Zaawansowana definicja klasy <?php /* Początek definicji klasy Koszyk - definiującej koszyk sklepowy */ class Koszyk { /* Definicja zmiennej - tablicy asocjacyjnej zawierającej numery artykułów i ich ilość */ var $artykuly; // Funkcja dodająca podaną ilość artykułów do koszyka function dodaj($numer, $ilosc) { $this->artykuly["$numer"] += $ilosc; } // Funkcja usuwająca podaną ilość artykułów z koszyka function usun($numer, $ilosc) { if($this->artykuly["$numer"]>$ilosc) $this->artykuly["$numer"]-=$ilosc; else $this->artykuly["$numer"]=0; } // Funkcja wyświetlająca zawartość koszyka function wyswietl(){ while(list($k, $v) = each($this->artykuly)) if($v>0) echo "Artykul nr $k - $v sztuk "; } } // Przykład wykorzystania $koszyk = new Koszyk; $koszyk->dodaj('20', 2); $koszyk->dodaj('12', 4); $koszyk->dodaj('20', 5); $koszyk->usun('12', 4); $koszyk->wyswietl(); ?>

43 17-10-2009Technologie internetowe II43 Rozszerzenie 1 <?php class Nazwany_koszyk extends Koszyk { var $nazwa; function ustaw_nazwe($nowa_nazwa) { $this->nazwa = $nowa_nazwa; } } $koszyk = new Nazwany_koszyk; $koszyk->ustaw_nazwe('Fredzio'); $koszyk->dodaj('2', 34); echo 'Właściciel: '.$koszyk->nazwa.' '; $koszyk->wyswietl(); ?>

44 17-10-2009Technologie internetowe II44 Rozszerzenie 2 <? class Auto_koszyk extends Nazwany_koszyk { function Auto_koszyk( $nazwa = 'Anonim') { $this->ustaw_nazwe($nazwa); } } $koszyk = new Auto_koszyk('Jakiś właściciel'); $koszyk->dodaj('4', 30); echo 'Właściciel: '.$koszyk->nazwa.' '; $koszyk->wyswietl(); ?>

45 Include i Require

46 17-10-2009Technologie internetowe II46 Instrukcje include i require Włączenie do kodu zawartość innego pliku także zawierającego kod PHP. Obu tym instrukcjom podaje się jeden parametr - nazwę pliku do włączenia do kodu (może to być ścieżka do pliku znajdującego się na innym serwerze WWW). Różnica między nimi polega na sposobie włączania tych plików do kodu. W przypadku instrukcji require pliki dołączane są do kodu jeszcze przed parsowaniem, w każdym miejscu gdzie znajduje się instrukcja require.

47 17-10-2009Technologie internetowe II47 Instrukcje include i require (2) W celu dołączania plików których nazwa pobierana jest ze zmiennej - zamiast tego należy użyć instrukcji include. Przetwarzanie plików zaincludowanych zaczyna się od trybu HTML, a więc jeśli plik zawiera tylko kod PHP, to powinien zaczynać się od jednego ze znaczników otwierających. Jeśli instrukcja include używana jest w pętli lub instrukcji warunkowej, to pomimo że jest to teoretycznie jedna linia, to musi znajdować się ona w nawiasach klamrowych, ponieważ ta pojedyncza linia zamieniana jest na wiele linii dołączanych z innego pliku.


Pobierz ppt "Technologie internetowe II Wykład 2 – Funkcje, Obiekty Dr Krzysztof Heller."

Podobne prezentacje


Reklamy Google