Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.

Podobne prezentacje


Prezentacja na temat: "Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska."— Zapis prezentacji:

1 Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska

2 PHP, cz. 3

3 Klasy

4 Klasa jest to … Kilka słów wstępu …

5 Tworzenie obiektów

6 class student { public $imie; public $nazwisko; function odczytaj_dane(){ return $this->imie. ", ". $this->nazwisko; } $student = new student; $student->imie = "Jan"; $student->nazwisko = "Kowalski"; echo $student->odczytaj_dane(); Tworzenie klasy

7 class student { private $imie; private $nazwisko; function odczytaj_dane(){ return $this->imie. ", ". $this->nazwisko; } $student = new student; $student->imie = "Jan"; $student->nazwisko = "Kowalski"; echo $student->odczytaj_dane(); Zasięg zmiennych i metod

8 public – zmienna lub metoda jest widoczna z poziomu całego skryptu PHP protected – zmienna lub metoda jest widoczna tylko z obiektu w którym się znajduje bądź z jego obiektu podrzędnego i tylko z tego poziomu może być dostępna lub widoczna private – zmienna lub metoda jest widoczna tylko z obiektu w którym się znajduje Zasięg zmiennych i metod

9 public – zmienna lub metoda jest widoczna z poziomu całego skryptu PHP protected – zmienna lub metoda jest widoczna tylko z obiektu w którym się znajduje bądź z jego obiektu podrzędnego i tylko z tego poziomu może być dostępna lub widoczna private – zmienna lub metoda jest widoczna tylko z obiektu w którym się znajduje Zasięg zmiennych i metod

10 class klasa_pierwsza { public $public = "dostęp public"; protected $protected = "dostęp protected"; private $private = "dostęp private"; function pokaz_zmienne() { echo $this->public."\n"; echo $this->protected."\n"; echo $this->private."\n"; } $obiekt_1 = new klasa_pierwsza; $obiekt_1->pokaz_zmienne(); //wyświetlone zostaną wszystkie zmienne echo $obiekt_1->public; //ok echo $obiekt_1->protected;//błąd!! echo $obiekt_1->private; //błąd!! Zasięg zmiennych i metod

11 class klasa_druga extends klasa_pierwsza {} $obiekt_2 = new klasa_druga; $obiekt_2->pokaz_zmienne(); // pokazane zostaną: $public, $protected i $private echo $obiekt_2->public; //ok echo $obiekt_2->private; //zmienna niezdefiniowana echo $obiekt_2->protected; //błąd!! Zasięg zmiennych i metod

12 class student { private $imie; private $nazwisko; function odczytaj_dane(){ return $this->imie. ", ". $this->nazwisko; } function ustaw_dane($imie="", $nazwisko=""){ $this->imie = $imie; $this->nazwisko = $nazwisko; } $student = new student; $student->ustaw_dane("Anna", "Kowalska"); echo $student->odczytaj_dane(); Konstruktor [1]

13 <?php class student { private $imie; private $nazwisko; function __construct($imie="", $nazwisko="") { $this->imie = $imie; $this->nazwisko = $nazwisko; } function __destruct(){echo "bye bye student";} function odczytaj_dane(){ return $this->imie. ", ". $this->nazwisko; } function ustaw_dane($imie="", $nazwisko=""){ $this->imie = $imie; $this->nazwisko = $nazwisko; } ?> Konstruktor i destruktor [2]

14 <? $student = new student("Jan", "Nowak"); echo $student->odczytaj_dane(). "\n"; $student->ustaw_dane("Anna", "Kowalska"); echo $student->odczytaj_dane(). "\n"; ?> tu jest kod do wykonania... Konstruktor i destruktor [3]

15 <?php class czlowiek { private $wzrost; private $waga; private function ustaw_wzrost($wzrost) {$this->wzrost=$wzrost;} private function ustaw_wage($waga) {$this->waga=$waga;} public function ustaw_wzrost_i_wage($wzrost, $waga) {$this->ustaw_wzrost($wzrost); $this->ustaw_wage($waga);} public function odczytaj_wiw() {return $this->wzrost. ", ". $this->waga;} }//class Klasy potomne [1]

16 class student extends czlowiek { private $imie; private $nazwisko; function __construct($imie="", $nazwisko="") { $this->imie = $imie; $this->nazwisko = $nazwisko; } function odczytaj_dane(){return $this->imie. ", ". $this- >nazwisko;} function ustaw_dane($imie="", $nazwisko="") {$this->imie = $imie;$this->nazwisko = $nazwisko;} function odczytaj_wszystko() {return $this->odczytaj_wiw();} } ?> <? $student = new student("Jan", "Nowak"); $student->ustaw_wzrost_i_wage(180,90); echo $student->odczytaj_wszystko(); ?> Klasy potomne [2]

17 Referencje i klonowanie = clone

18 <?php class student { private $imie; private $nazwisko; function __construct($imie="", $nazwisko="") { $this->imie = $imie; $this->nazwisko = $nazwisko; } function odczytaj_dane(){ return $this->imie. ", ". $this->nazwisko; } function ustaw_dane($imie="", $nazwisko=""){ $this->imie = $imie; $this->nazwisko = $nazwisko; } ?> Referencje i klonowanie

19 <? $s = new student("Jan","Kowalski"); echo $s->odczytaj_dane(); echo "\n"; $d = $s; $s->ustaw_dane("Anna", "Kowalska"); echo $d->odczytaj_dane(); echo "\n"; $e = clone($d); $d->ustaw_dane("Michał", "Nowak"); echo $e->odczytaj_dane(); ?> Referencje i klonowanie

20 Interfejs interfejs jest definicją abstrakcyjnego typu posiadającego jedynie operacje, a nie dane.

21 interface student_budowa { function odczytaj_dane(); function ustaw_dane($imie, $nazwisko); } class student implements student_budowa { private $imie; private $nazwisko; function __construct($imie="", $nazwisko="") { $this->imie = $imie; $this->nazwisko = $nazwisko; } function odczytaj_dane(){ return $this->imie. ", ". $this->nazwisko; } function ustaw_dane($imie="", $nazwisko=""){ $this->imie = $imie; $this->nazwisko = $nazwisko; } Interfejsy

22 interface student_budowa { function odczytaj_dane(); function ustaw_daneX($imie, $nazwisko); } Interfejsy

23 Klasa abstrakcyjna

24 interface student_budowa { function odczytaj_dane(); function ustaw_dane($imie, $nazwisko); } abstract class student_baza { private $nazwisko; abstract function pobierz_imie(); function witaj() { return "cześć!"; } Klasa abstrakcyjna [1]

25 class student extends student_baza implements student_budowa { private $imie; private $nazwisko; function __construct($imie="", $nazwisko="") { $this->imie = $imie; $this->nazwisko = $nazwisko; } function pobierz_imie(){ return $this->imie; } function odczytaj_dane(){ return $this->imie. ", ". $this->nazwisko; } function ustaw_dane($imie="", $nazwisko=""){ $this->imie = $imie; $this->nazwisko = $nazwisko; } Klasa abstrakcyjna [2]

26 <? $s = new student("Jan","Kowalski"); echo $s->witaj(); echo $s->pobierz_imie(); ?> Klasa abstrakcyjna [3]

27 abstract class student_baza { private $nazwisko; abstract function pobierz_imie(); abstract function pobierz_nazwisko(); function witaj() { return "cześć!"; } Klasa abstrakcyjna [4]

28 Zmienne i metody statyczne odwołanie do funkcji i zmiennych klasy nie poprzez obiekt elementy statyczne definiowane są operatorem static dostęp publiczny zamiast $this-> używamy self:: parent::

29 class mysqlp { //klasa połączeniowa public static $login, $haslo, $bd, $IP; public static $link; function dane($login="",$haslo="", $bd="", $IP="localhost"){ self::$login=$login; self::$haslo=$haslo; self::$bd=$bd; self::$IP=$IP; } function polacz(){ self::$link = mysqli_connect(self::$IP, self::$login, self::$haslo, self::$bd); echo "połączono..\n"; } } //class operator dwukropka [1] ::

30 class mysqlz extends mysqlp {//klasa do zapytań public static $wynik; function zapytanie($q=""){self::$wynik = mysqli_query(self::$link, $q);} function pokaz_wynik(){ while ($tabl = mysqli_fetch_assoc(self::$wynik)){ foreach($tabl as $k=>$v) { echo "$k => $v \n"; } }//while }//function public function polacz(){ if (mysqli_real_connect(self::$link, self::$IP,self::$login, self::$haslo, self::$bd)) { echo "połączenie z bazą danych jest aktywne..."; }; } public function polacz_ponownie(){ parent::polacz(); } }//class operator dwukropka [2] ::

31 <? mysqlp::dane("aniewiarowski", "xx", "aniewiarowski_baza"); echo mysqlp::polacz(); echo " "; mysqlz::dane("aniewiarowski", "xx", "aniewiarowski_baza"); //echo mysqlz::polacz(); mysqlz::zapytanie("select * from uzytkownicy limit 5;"); mysqlz::pokaz_wynik(); mysqlz::polacz(); mysqlz::polacz_ponownie(); ?> operator dwukropka [3] ::

32 Trochę JavaScript'u … AJAX

33 Kilka słów o języku JavaScript 1.język skryptowy 2.działa po stronie przeglądarki 3.powstał w 1995 roku wraz z przeglądarką Netscape 2.0 4.początkowe nazwy: Mocha, LiveScript 5.po umowie w firmą Sun – JavaScript 6.w Internet Explorer od wersji 3.0 (rok 1996) – Jscript (z przyczyn prawnych) 7.ECMAScript – rok 1997 – standard definiuje kluczowe elementy języka 8.ECMAScript w 1998 został uznany za normę ISO

34 Umieszczanie kodu w ciele strony

35 Dynamiczne umieszczanie plików zewnętrznych

36 Umieszczanie w pseudoadresach URL

37 Wykonanie kodu za pomocą obsługi zdarzeń na obiektach.

38 Wywołanie kodu JavaScript wraz z odnośnikiem.

39 document.write("Obsługa JavaScript: TAK"); Obsługa JavaScript: NIE Obsługa przeglądarki, w której jest wyłączona obsługa języka JavaScript lub przeglądarka go nie obsługuje.

40 Detekcja przeglądarki

41 Wykorzystanie navigator.appName

42 Wykorzystanie navigator.userAgent

43 Sprawdzanie obsługi funkcji wymaganych przez stronę internetową.

44 Zapobieganie buforowaniu obrazków za pomocą JavaScript.

45 Zapobieganie buforowaniu dokumentów za pomocą JavaScript.

46 Przekierowanie i odświeżanie strony internetowej

47 Przekierowanie strony internetowej.

48 Przekierowanie strony internetowej za pomocą HTMLa.

49 Opóźnienie przekierowania strony internetowej.

50 Podmiana strony internetowej. Poprzednia strona nie zapisuje się w historii przeglądanych stron.

51 Odświeżenie strony internetowej.

52 Zapobieganie buforowaniu.

53 Odczytywanie daty i czasu

54 Wykorzystanie obiektu Date.

55 Wybrane metody obiektu Date. metodaopis getDate()aktualny dzień miesiąca getFullYear()aktualny rok w pełnym formacie getHours()aktualna godzina getMinutes()aktualne minuty getSeconds()aktualne sekundy getMonth()+1aktualny miesiąc toString()konwersja do ciągu

56 Wyświetlenie daty modyfikacji strony.

57 Nawigacja w historii przeglądarki.

58 Okna z komunikatami

59 Okno alert.

60 Okno confirm.

61 Okno prompt.

62 AJAX

63 Termin wymyślony w 2005 roku przez Jesse James Garret, oznacza z j. ang. Asynchronous JavaScript and XML, czyli asynchroniczny JavaScript i XML. Jest to technologia tworzenia stron internetowych, w której interakcja użytkownika z serwerem odbywa się bez przeładowania całej strony internetowej, a dane pobierane są dynamicznie i umieszczane w konkretne miejsca w dokumencie internetowym.

64 AJAX Na technologię AJAX składają się następujące elementy: 1.XMLHttpRequest – klasa umożliwiająca przesyłanie danych. W trakcie przesyłu danych użytkownik może wykonywać inne czynności na stronie. Dane mogą być pobierane z różnych plików umiejscowionych serwerze tej samej domeny w jednej chwili. 2.JavaScript – język skryptowy. W rzeczywistości może być to dowolny język skryptowy działający po stronie przeglądarki internetowej (np. VBScript). 3.XML – z j. ang. Extensible Markup Language, czyli Rozszerzalny Język Znaczników – uniwersalny język formalny, dzięki któremu istnieje możliwość reprezentowania różnych danych w strukturalizowany sposób. W praktyce, w tej technologii przesyłane są fragmenty stron internetowych napisane w HTMLu.

65 AJAX Wady technologii: 1.Strony funkcjonują w oparciu o język skryptowy. To sprawia, że strony są dostępne wyłącznie dla użytkowników, u których nie jest zablokowana obsługa języków skryptowych w przeglądarkach internetowych. 2.Utrudnienia podczas pobierania strony internetowych na dysk. Fragmenty stron, które wypełnione są danymi z użyciem technologii AJAX, nie będą zapisane w pliku. 3.Problem z indeksowaniem stron przez roboty wyszukiwarek internetowych. 4.Jeżeli przeglądanie podstron danej witryny internetowej oparte jest wyłącznie o AJAX, to w tym momencie przestaje funkcjonować standardowy model przeglądania strony internetowej, co może skutkować niechęcią pewnej części użytkowników.

66 AJAX Reasumując: w technologii AJAX chodzi wyłącznie o zastosowanie XMLHttpRequest do wysyłania żądań HTTP do serwera WWW i użycie języka JavaScript (lub innego skryptowego) do wykonania odpowiednich działań i wyświetlenia danych po stronie użytkownika.

67 Inicjowanie aplikacji AJAX XMLHttp = new XMLHttpRequest(); XMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); Obiekt XMLHttpRequest jest podstawą technologii AJAX. Jest on obsługiwany przez wszystkie przeglądarki obsługujące AJAX, natomiast w przypadku niektórych wersji Internet Explorer, wymagany jest obiekt ActiveX.

68 Tworzenie nowego obiektu XMLHttpRequest AJAX

69 Przykład utworzenia nowego obiektu XMLHttpRequest. plik: xmlhttp.js

70 Wysyłanie żądania GET AJAX

71 Wysyłanie żądania GET

72 var XMLHttp = getXMLHttp(); XMLHttp.open("GET", "plik.php"); XMLHttp.onreadystatechange = handlerFunction; XMLHttp.send(null); function handlerFunction() { if (XMLHttp.readyState == 4) { window.alert("Wczytane dane: " + XMLHttp.responseText); } Wysyłanie żądania GET

73 Stany obiektu XMLHttpRequest 0 – nie zainicjowano 1 – wczytywanie 2 – wczytanie 3 – oczekiwanie 4 – zakończenie

74 AJAX Wysyłanie żądania POST

75 XMLHttp.setRequestHeader("Content-type", "application/x-www-form- urlencoded"); XMLHttp.send("zmienna1=Technologia&zmienna2=AJAX"); W przeciwieństwie do metody GET, metoda POST nie wysyła parametrów w adresie, lecz w parametrach metody send().

76 Wysyłanie żądania POST

77 AJAX Żądania synchroniczne

78 XMLHttp.open("GET", "plik.php", false); Trzeci parametry metody open przyjmuje wartość false. Bez podania parametru trzeciego, domyślnie jest true – czyli żądanie asynchroniczne. Wywołanie synchroniczne zatrzymuje całkowicie wykonywanie skryptu. Jeżeli łącze jest wolne lub serwer jest przeciążony strona będzie się zacinać.

79 wczytywanie danych... window.onload = function() { var XMLHttp = getXMLHttp(); XMLHttp.open("GET", "plik.php", false); XMLHttp.send(null); document.getElementById("tresc").innerHTML = XMLHttp.responseText; } Żądania synchroniczne

80 AJAX Przerwanie żądania HTTP

81 XMLHttp.abort(); Sens przerwania pobierania danych ma miejsce wtedy, gdy wartość parametru readyState jest różna od 4 i od 0. W przeciwnym wypadku nie ma czego przerywać.

82 var XMLHttp = getXMLHttp(); XMLHttp.open("GET", "czekaj.php?" + Math.random()); XMLHttp.onreadystatechange = handlerFunction; XMLHttp.send(null); window.setTimeout("timeout();", 5000); function handlerFunction() { if (XMLHttp.readyState == 4) { window.alert("Wczytane dane: " + XMLHttp.responseText); } function timeout() { if (XMLHttp.readyState != 4 && XMLHttp.readyState != 0) { XMLHttp.onreadystatechange = function() { }; XMLHttp.abort(); window.alert("Anulowano pobieranie danych"); } Przerwanie żądania HTTP

83 AJAX Pobranie nagłówków HTTP

84 Pobranie nagłówka HTTP var XMLHttp = getXMLHttp(); XMLHttp.open("GET", "plik.php"); XMLHttp.onreadystatechange = handlerFunction; XMLHttp.send(null); function handlerFunction() { if (XMLHttp.readyState == 4) { var servertype = XMLHttp.getResponseHeader("Server"); window.alert("Serwer WWW: " + servertype); }

85 Pobranie nagłówków HTTP var XMLHttp = getXMLHttp(); XMLHttp.open("GET", "plik.php", false); XMLHttp.onreadystatechange = handlerFunction; XMLHttp.send(null); function handlerFunction() { if (XMLHttp.readyState == 4) { var serverinfo = XMLHttp.getAllResponseHeaders(); document.write(serverinfo); }

86 AJAX Sprawdzenie istnienia pliku na serwerze – zmienna status.

87 XMLHttp.status wczytywanie danych... window.onload = function() { var XMLHttp = getXMLHttp(); XMLHttp.open("GET", "xplik.php", false); XMLHttp.send(null); tresc = XMLHttp.responseText; if (XMLHttp.status == 404) { tresc = " brak pliku! "; } document.getElementById("tresc").innerHTML = tresc; }

88 AJAX Wybrane kody odpowiedzi HTTP

89 Wybrane kody odpowiedzi HTTP. Kody informacyjne 110 – Connection Timed Out. Przekroczono czas połączenia. Serwer zbyt długo nie odpowiada. 111 – Connection refused. Serwer odrzucił połączenie Kody powodzenia 200 – OK. Zawartość żądanego dokumentu (najczęściej zwracany nagłówek odpowiedzi w komunikacji WWW Internetu)

90 Wybrane kody odpowiedzi HTTP. Kody przekierowania 400 – Bad Request. Nieprawidłowe zapytanie – żądanie nie może być obsłużone przez serwer z powodu błędnej składni zapytania 403 – Forbidden. Zabroniony – serwer zrozumiał zapytanie lecz konfiguracja bezpieczeństwa zabrania mu zwrócić żądany zasób 404 – Not Found. Nie znaleziono – serwer nie odnalazł zasobu według podanego URL ani niczego co by wskazywało na istnienie takiego zasobu w przeszłości 414 – Request-URI Too Long. Adres URI zapytania zbyt długi – długość zażądanego URI jest większa niż maksymalna oczekiwana przez serwer 500 – Internal Server Error. Wewnętrzny błąd serwera – serwer napotkał niespodziewane trudności, które uniemożliwiły zrealizowanie żądania

91 C. D. N.


Pobierz ppt "Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska."

Podobne prezentacje


Reklamy Google