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 Technologie 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, et_II_wyklad2.ppthttp://docs.wsei.pl/dydaktyka/Techn_Intern et_II_wyklad2.ppt

3 Technologie 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 Technologie 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 Technologie internetowe II6 Składnia function nazwa_funkcji ($argument1, $argument2) { // treść funkcji }

7 Technologie internetowe II7 Przykładowa funkcja 1

8 Technologie 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 Technologie 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 Technologie internetowe II10 Przykładowa funkcja 2

11 Technologie internetowe II11 Przykładowa funkcja 3

12 Technologie 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 Technologie 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 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 Technologie internetowe II14 Test zasięgu 1

15 Technologie internetowe II15 Test zasięgu 2

16 Technologie internetowe II16 Test zasięgu 3

17 Technologie 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 Technologie internetowe II18 Przykład przechowywania zmiennych 1

19 Technologie internetowe II19 Przykład przechowywania zmiennych 2

20 Technologie 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 Technologie internetowe II21 Przykład – bez referencji

22 Technologie internetowe II22 Przykład – z referencją

23 Technologie 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 Technologie internetowe II24 Przykład funkcji - podsumowanie

25 Technologie 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"::)); ?>

26 Klasy i obiekty

27 Technologie 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 Technologie 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 Technologie internetowe II29 Tworzenie klasy Class NazwaKlasy { // tutaj wpisujemy definicje } $obiekt1 = new NazwaKlasy();

30 Technologie internetowe II30 Istnienie klasy

31 Technologie internetowe II31 Prosta klasa marka." ".$samochod->model.", kolor ".$samochod->kolor; ?> własności obiektu

32 Technologie internetowe II32 Prosta klasa 2 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 Technologie 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 Technologie internetowe II34 Klasa cześć powiedzCzesc(); ?>

35 Technologie internetowe II35 Klasa cześć imie; } } $obiekt1 = new mojaKlasa(); $obiekt1->powiedzCzesc(); ?> Operowanie na własnościach klasy z wnętrza metody

36 Technologie internetowe II36 Klasa cześć 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 Technologie 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 Technologie 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 Technologie internetowe II40 Dziedziczenie 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 Technologie internetowe II41 Dziedziczenie 2 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 Technologie internetowe II42 Zaawansowana definicja klasy 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 Technologie internetowe II43 Rozszerzenie 1 nazwa = $nowa_nazwa; } } $koszyk = new Nazwany_koszyk; $koszyk->ustaw_nazwe('Fredzio'); $koszyk->dodaj('2', 34); echo 'Właściciel: '.$koszyk->nazwa.' '; $koszyk->wyswietl(); ?>

44 Technologie internetowe II44 Rozszerzenie 2 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 Technologie 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 Technologie 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