520 likes | 803 Views
Piotr Czapiewski Wydział Informatyki ZUT. Technologie tworzenia aplikacji internetowych. Wykład 1. Architektura aplikacji internetowych. Architektura trójwarstwowa ( 3-tier ). Architektura aplikacji internetowych. Architektura trójwarstwowa ( 3-tier ).
E N D
Piotr Czapiewski Wydział Informatyki ZUT Technologie tworzenia aplikacji internetowych Wykład 1
Architektura aplikacji internetowych • Architektura trójwarstwowa (3-tier)
Architektura aplikacji internetowych • Architektura trójwarstwowa (3-tier)
Architektura aplikacji internetowych • Architektura wielowarstwowa (multi-tier, n-tier)
Serwer WWW a serwer aplikacji • Serwer WWW • Obsługa żądań HTTP, udostępnianie dokumentów,komunikacja z przeglądarką WWW • Uwierzytelnianie, kontrola dostępu • Przykładowe serwery: Apache, IIS, lighttpd • Serwer aplikacji • Platforma uruchamiania warstwy aplikacji,logiki biznesowej, usług sieciowych • Komunikacja z warstwą klienta i warstwą danych • Przykładowe serwery: Tomcat, JBoss, Glassfish,.NET Framework, Zend Server, Zope
Technologie aplikacji internetowych Smarty, Zend, Symfony, Zoop, CodeIgniter… CGI, Perl, PHP, ColdFusion, ASP… JSP, JSF, Struts, Spring, Tapestry, GWT, Seam… Java, .NET, C#, VB, Ruby, RoR, Flex…
PHP PHP: Hypertext Preprocessor
PHP: HypertextPreprocessor • PHP • Język skryptowy ogólnego przeznaczenia • Główne zastosowanie: dynamiczne strony internetowe, server-sidescripting • Powstanie i rozwój • Pierwsza wersja: 1995 r. • Twórca: RasmusLerdorf • Obecnie rozwijany przez PHP Group, http://php.net • Opensource • Zalety • Dostępny dla większości platform • Łatwy w użyciu • Szybki w działaniu
PHP: osadzanie w HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Example</title> </head> <body> <?php echo"Hi, I'm a PHP script!"; ?> </body> </html>
Proces generowania strony • Zasada działania • Początkowo: kod interpretowany • Obecnie: kod kompilowany do postaci bytecodu uruchamianego przez Zend Engine
Jak zacząć? • Serwer WWW • Apache – http://www.apache.org • Moduł PHP • http://www.php.net • Baza danych • MySQL – http://www.mysql.com • PostgreSQL – http://www.postgresql.org • Paczuszka – wszystko w jednym • XAMPP – http://www.apachefriends.org
Jak zacząć? • Środowisko programistyczne (IDE) • Netbeans + PHP plugin – http://www.netbeans.org • Eclipse + PDT plugin – http://www.eclipse.org • Aptana – http://www.aptana.com
Składnia PHP • Przeplatanie PHP i HTML • Blok kodu PHP może być ograniczony przez:
Komentarze • Komentarze w stylu języka C • Jednolinijkowe • Blokowe • Komentarze w stylu Perla
Zmienne • Identyfikatory zmiennych • Znak $ + nazwa zmiennej • $x, $y, $username, $_A27 • Rozróżniana wielkość liter • $kartofel != $Kartofel != $KARTOFEL • Dozwolone znaki: • Litery, cyfry, znakipodkreślenia • Nazwa zmiennej musizaczynać się od literylub podkreślenia
Przypisywanie zmiennych • Domyślnie zmienne przypisywane są przez wartość: • Przypisanie przez referencję:
Przypisywanie zmiennych • Uwaga na referencje:
Inicjalizacja zmiennych • Deklaracja i inicjalizacja zmiennych nie jest konieczna • Zmienne inicjowane są wartością domyślną danego typu • boolean: false, integer: 0, string: "" • Niebezpieczeństwo: • Sprawdzenie czy zmiennazostała zainicjowana: Brak błędu Wynik: 7
Typy zmiennych • Typów zmiennych w PHP nie trzeba deklarować • Typ zmiennej określany jest na podstawie kontekstu,w jakim zmienna została użyta • Automatyczna konwersja typów
Łańcuchy tekstowe • Łańcuch może być ograniczony: • Apostrofami – 'Ala ma kota' • Cudzysłowem – "Ala ma kota”
Łańcuchy ograniczone apostrofami • Wewnątrz możemy umieszczać cudzysłów • Aby w środku łańcucha umieścić apostrof, poprzedzamy go znakiem backslash: \' • Aby umieścić backslash na końcu łańcucha lub przed znakiem apostrofu, wpisujemy dwa znaki backslash: \\ • Backslash umieszczony przed innym znakiem zostanie wyświetlony normalnie • Zmienne wewnątrz łańcucha nie są rozwijane • Łańcuch może zawierać znaki nowej linii
Łańcuchy ograniczone cudzysłowem • Więcej sekwencji specjalnych, np. \n, \r, \t, \$, \" • Zagnieżdżanie cudzysłowu i apostrofu
Łańcuchy ograniczone cudzysłowem • Rozwijanie zmiennych zawartych w łańcuchu
Operacje na łańcuchach tekstowych • Operator konkatenacji – kropka • Zmiana wielkości znaków
Operacje na łańcuchach tekstowych • Dostęp do pojedynczych znaków • Długość łańcucha • Wyszukanie i zamiana ciągów znaków
Operacje na łańcuchach tekstowych • Zamiana łańcucha na liczbę • Automatyczna, typ zależny od kontekstu • Jeśli łańcuch zawiera: kropkę, 'e' lub 'E' typ float • W przeciwnym wypadku typ integer • Zamieniana jest początkowa część łańcucha, tworząca liczbę • Jeśli łańcuch nie zawiera liczby wartość zero
Instrukcje sterujące • Instrukcja warunkowa if
Instrukcje sterujące • Instrukcja warunkowa if
Instrukcje sterujące • Pętle while i do-while
Instrukcje sterujące • Pętle for i foreach
Instrukcje sterujące • Instrukcja wyboru switch
Tablice • Tablica w PHP jest w rzeczywistości uporządkowaną mapą • przechowuje pary klucz-wartość • Tablicy można użyć jako: • tablicy, listy, mapy, słownika, stosu, kolejki… • Wielowymiarowe tablice • tablice zawierające tablice
Tablice • Tworzenie tablicy
Tablice • Dopisywanie danych na końcu tablicy • Usuwanie danych z tablicy 1 2 3 8 13 18
Tablice • Iterowanie po tablicy – pętla foreach
Funkcje • Definicja i wywołanie funkcji • Funkcja może być zdefiniowana później, niż użyta • Nazwa funkcji – reguły jak dla zmiennych • Zawartość – dowolny kod, także inne funkcje i klasy
Argumenty funkcji • Domyślnie argumenty przekazywane są przez wartość • Przekazywanie przez referencję
Argumenty funkcji • Argumenty z wartością domyślną Making a cup of cappuccino. Making a cup of . Making a cup of espresso.
Argumenty funkcji • Argumenty z wartością domyślną – błędne użycie • ŹLE • DOBRZE
Obsługa formularzy rejestruj.php <?phpif(isset($_REQUEST['email'])) {$imie = filtruj($_REQUEST['imie']);$nazw = filtruj($_REQUEST['nazw']);$email = filtruj($_REQUEST['email']);$id = dodaj($imie, $nazw, $email);} else {wyswietlFormularz();}function filtruj($s) {returntrim(htmlspecialchars($s));}?> rejestruj.php?imie=Jan&nazw=Kowalski index.html <formaction="rejestruj.php" method="get"> Imię: <inputtype="text"name="imie"> Nazwisko: <inputtype="text"name="nazw"> <inputtype="submit"value="Wyślij"></form>
Obsługa formularzy • Formularz HTML • Tablice globalne: $_GET, $_POST