Technologie Internetu PHP

Podobne dokumenty
Kurs WWW. Paweł Rajba.

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

JavaScript funkcyjność

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

PHP 5 język obiektowy

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Systemy internetowe Wykład 3 PHP

10. Programowanie obiektowe w PHP5

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie obiektowe

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Podstawy programowania III

Programowanie obiektowe

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Programowanie obiektowe w VB cz 2

Wstęp. Ale po co? Implementacja

Programowanie obiektowe

Polimorfizm. dr Jarosław Skaruz

Enkapsulacja, dziedziczenie, polimorfizm

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Wykład 7: Pakiety i Interfejsy

Kurs programowania. Wykład 9. Wojciech Macyna

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Java: interfejsy i klasy wewnętrzne

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Wykład 8: klasy cz. 4

PHP: bloki kodu, tablice, obiekty i formularze

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie obiektowe

Klasy cd. Struktury Interfejsy Wyjątki

Wykład 4: Klasy i Metody

Programowanie 2. Język C++. Wykład 3.

Programowanie obiektowe. Obiekt Klasa Składnia klasy: Interfejsy Składnia interfejsu: Metody Składnia instrukcji Sub: Składnia instrukcji function:

Zmienne i stałe w PHP

Klasy abstrakcyjne i interfejsy

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie obiektowe

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

1 Atrybuty i metody klasowe

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Dokumentacja do API Javy.

Programowanie obiektowe

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Programowanie Komputerów

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Programowanie obiektowe

Programowanie obiektowe i zdarzeniowe

Dziedziczenie. dr Jarosław Skaruz

TEMAT : KLASY DZIEDZICZENIE

Programowanie w środowiskach graficznych. Wykład 3 Język C#

TEMAT : KLASY POLIMORFIZM

Abstrakcyjny typ danych

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Wykład 6: Dziedziczenie

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Aplikacje w środowisku Java

OPT Open Power Template. System szablonów OPT. Przykładowy skrypt oraz szablon OPT OPT API

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Wywoływanie metod zdalnych

Zaawansowane programowanie w języku C++ Programowanie obiektowe

PARADYGMATY PROGRAMOWANIA Wykład 4

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Automatyki Akademia Górniczo-Hutnicza w Krakowie. 20 października 2013

Programowanie obiektowe

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Wykład 5 Okna MDI i SDI, dziedziczenie

Wstęp do ruby dla programistów javy

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Platformy Programistyczne Podstawy języka Java

Programowanie w Internecie. Java

Java Język programowania

Języki skryptowe - PHP. Podstawy PHP. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Programowanie obiektowe

Materiały do zajęć VII

Wstęp do programowania obiektowego, wykład 7

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Programowanie obiektowe

Podstawy programowania III WYKŁAD 6

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

Internetowe bazy danych

Kurs programowania. Wykład 8. Wojciech Macyna

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

Definiowanie własnych klas

Technologie i usługi internetowe cz. 2

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Wzorce prezentacji internetowych

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Transkrypt:

Technologie Internetu PHP Aleksander Denisiuk denisjuk@pjwstk.edu.pl Polsko-Japońska Wyższa Szkoła Technik Komputerowych zamiejscowy ośrodek dydaktyczny w Gdańsku ul. Brzegi 55 80-045 Gdańsk Technologie Internetu p. 1

PHP Najnowsza wersja tego dokumentu dostępna jest pod adresemhttp://users.pjwstk.edu.pl/~denisjuk/ Technologie Internetu p. 2

Wprowadzenie do PHP PHP: Hypertext Preprocessor http://www.php.net/manual/pl Technologie Internetu p. 3

Hello, World! <html><head> <title>php Test</title> </head><body> echo <p>hello World</p> ; </body></html> <html><head> <title>php Test</title> </head><body> <p>hello World</p> </body></html> Technologie Internetu p. 4

Model Obiektowy include( include/main.php ); $main = new Main(); $main->printheader(); $main->printbody(); $main->printfooter(); Technologie Internetu p. 5

Oddzielenie logiki od prezentacji Szablony Savant Open Power Template PHPTAL Smarty (np. Smarty) Technologie Internetu p. 6

Smarty. Przykład $smarty->assign_by_ref( colors, array(1=> red,2=> blue,3=> green ); $smarty->assign( wybrano,2); <p>masz {$colors @count opcji do wyboru:</p> {html_options name=kolorki options=$colors selected=$wybrano {* komentarz * Technologie Internetu p. 7

Typy Danych Proste boolean integer float, double string Złożone array object Specjalne resource NULL Technologie Internetu p. 8

Typizacja dynamiczna $x=0.1; $x=array(); Technologie Internetu p. 9

Tablice sekwencyjne $numerki[0] = "Pierwszy"; $numerki[1] = "Drugi"; $numerki[] = "Trzeci"; echo $numerki[2]; assocjacyjne $osoba["imie"] = "Aleksander"; $osoba["adres"] = "denisjuk@pjwstk.edu.pl"; echo "<a href= mailto:".$osoba[ adres ]. ^^I " >$osoba[nazwisko]</a>" Technologie Internetu p. 10

Łańcuchy znaków echo this is $Sstring\n ; echo "this is $Sstring\n"; echo <<<EOT $tablica[1] $tablica[prim] EOT; echo <<< EOT $tablica[1] $tablica[prim] EOT; Technologie Internetu p. 11

Zasięg zmiennych $a = 1; include b.inc ; function test(){ echo $a; test(); Technologie Internetu p. 12

Zmienne globalne (global) $a = 1; $b = 2; function Suma1(){ global $a, $b; $b = $a + $b; function Suma2(){ $GLOBALS[ b ] = ^^I$GLOBALS[ a ] + $GLOBALS[ b ]; Technologie Internetu p. 13

Zmienne superglobalne $GLOBALS $_SERVER $_GET $_POST $_FILES $_COOKIE $_SESSION $_REQUEST $_ENV Technologie Internetu p. 14

Zmienne statyczne (static) function licznik(){ static $a = 0; return $a++; for($i=1;$i<10;$i++){ echo licznik(); brak możliwości zresetowania licznika Technologie Internetu p. 15

Referencje $a =& $b; $tygrys =& new Kot(); function zaczipuj (&$zwierze){... zaczipuj ($tygrys); function &druh ($osoba){... return $friend; $pies =& druh($kot); Technologie Internetu p. 16

Czym nie sa referencje function zaczipuj (&$zwierze){ $zwierze =& $GLOBALS["kot"]; zaczipuj($kot); Kot nie zostanie zaczipowany! Technologie Internetu p. 17

$this W metodach obiektowych$this jest zawsze referencja do obiektu wywołujacego dana metodę. W metodach statycznych$this nie jest określony. Technologie Internetu p. 18

Przestrzenie imion Problemy: Kolizje imion Zbyt dlugie i nieczytelne nazwy zmiennych (by zapobiec kolizjom) Technologie Internetu p. 19

Przestrzenie imion. Deklaracja namespace OpenDocument; const Encoding = UTF-8 ; class Document{ /*... */ function topdf() { /*... */ namespace OpenDocument\Calc; const Encoding = UTF-8 ; class Document{ /*... */ function topdf() { /*... */ Technologie Internetu p. 20

Przestrzenie imion. Rozwiazanie namespace OpenDocument; topdf(); // OpenDocument\toPDF(); Document::method(); // metoda method() klasy OpenDocument\Document echo Encoding; // OpenDocument\Encoding Calc\toPDF(); // OpenDocument\Calc\toPDF(); Calc\Document::method(); // metoda method() ^^I // klasy OpenDocument\Document\Calc echo Calc\Encoding; // OpenDocument\Calc\Encoding \OpenDocument\Calc\toPDF(); // OpenDocument\Calc\toPDF(); \OpenDocument\Calc\Document::method(); // metoda method() ^^I // klasy OpenDocument\Document\Calc echo \OpenDocument\Calc\Encoding; // OpenDocument\Calc\Encoding Technologie Internetu p. 21

Formularze <form action="action.php?sid=12092371" method="post"> <p>login: <input type="text" name="name" /></p> <p>password: <input type="password" name="pswrd" /></p> <p><input type="submit" name="sbmt" value="ok"/></p> </form> $_GET[ sid ]; //12092371 $_POST[ name ]; $_POST[ pswrd ]; $_POST[ sbmt ]; //ok Technologie Internetu p. 22

Sesje session_start(); if (empty($_session[ count ])) { $_SESSION[ count ] = 1; else { $_SESSION[ count ]++; echo SID; //$ session_destroy(); BOM Technologie Internetu p. 23

Obiektowy model PHP5. Deklaracja klasy class Zwierze{ // property declaration private $lap = 4; // method declaration public function getilosclap() { return $this->lap; $kot = new Zwierze; Technologie Internetu p. 24

Konstruktor i destruktor class Zwierze{ private $lap=4; function construct($x) { $this->lap = $x; function destruct() { echo "brak dobrego przykladu"; $tukan = new Zwierze(2); Dla wstecznej kompatybilności możliwy jest konstruktorzwierze Technologie Internetu p. 25

Obiekty a referencje Obiekty zawsze sa przekazywane przez referencję Nadanie wartości obiektu też przez referencję Utworzenie kopii obiektu: $dolly=clone $owca Jeżeli określona, zostanie wywołana na kopii metoda clone() Technologie Internetu p. 26

Dziedziczenie class Zwierze{ protected $lap; public function getilosclap(){ return $this->lap = $x; class Kot extends Zwierze{ public function getilosclap() { return parent::getilosclap(); public function construct(){ $lap=4; Technologie Internetu p. 27

Stałe klas class OpenDocument{ const encoding = UTF-8 ; function showencoding() { echo self::encoding; echo OpenDocument::encoding; $classname = "OpenDocument"; echo $classname::encoding; // od PHP 5.3.0 $class = new OpenDocument(); $class->showconstant(); echo $class::encoding; // od PHP 5.3.0 Technologie Internetu p. 28

Static class OpenDocument{ static encoding = UTF-8 ; static function toeps($picture) {... public function showencoding(){ echo $self::encoding echo OpenDocument::encoding; OpenDocument::encoding= iso8859-2 OpenDocument::toEPS=( obraz.pdf ); Technologie Internetu p. 29

Klasy abstrakcyjne abstract class Figura{ abstract protected function pole(); public function printpole() { print $this->pole(); class Kolo extends Figura{ const Pi=3.1415926; private $promien; protected function pole() { return Pi*$promien; public function construct($r) { $this->promien=$r; Technologie Internetu p. 30

Interfejsy Pozwalaja na definicję funkcji, które klasa będzie implementowała, bez implementacji tych funkcji Interfejsy się deklaruje podobno do klas, za pomoca słowainterface Wszystkie metody powinny być publiczne (public) Dopuczszalne jest dziedziczenie interfejsów (extends) Interfejsy moga mieć stałe (const) Klasa implementujaca deklaruję się za pomoca operatoraimplements Klasa może implementować kilka interfejsów (przecinek) Wszystkie metody powinny być zaimplementowane w implementujacej klasie Technologie Internetu p. 31

Przykład interfejsów interface displayable{ function display(); interface printable{ function doprint(); class foo implements displayable, printable{ function display() {... function doprint() {... Technologie Internetu p. 32

Przeciażenie metod mixed call ( string $name, array $arguments ) przy dostępie do nieokreślonej metody klasy mixed callstatic ( string $name, array $arguments ) przy dostępie do nieokreślonej statycznej metody klasy Technologie Internetu p. 33

Przeciażenie metod. Przykład class Magic { function call($name,$arguments) { if($name== foo ) { if(is_int($arguments[0])) $this->foo_for_int($arguments[0]); if(is_string($arguments[0])) $this->foo_for_string($arguments[0]); private function foo_for_int($x) {... private function foo_for_string($x) {... $x = new Magic(); $x->foo(3); $x->foo("3"); Technologie Internetu p. 34

Przeciażenie właściwości set() przy zapisywaniu danych do nieokreślonej właściwości. get() przy odczytywaniu danych z nieokreślonej właściwości. isset() przy wywołaniuisset() lubempty() do nieokreślonej właściwości. unset() przy wywołaniuunset() do nieokreślonej właściwości. Technologie Internetu p. 35

final class BaseClass { final public function nieprzykrywalna(){... final class KlasaNiedziedziczalna{... Technologie Internetu p. 36

Late Static Bindings class A { public static function who() { echo CLASS ; public static function test() { static::who(); // static:: class B extends A { public static function who() { echo CLASS ; B::test(); Technologie Internetu p. 37

Serializacja // classa.inc: class A {... // page1.php: include("classa.inc"); $a = new A; $s = serialize($a); file_put_contents( store, $s); // page2.php: include("classa.inc"); $s = file_get_contents( store ); $a = unserialize($s); Technologie Internetu p. 38

Wyjatki function readconf($cfgfile){ $resultarr = array(); if (file_exists($cfgfile)) { return parse_ini_file($cfgfile); else { throw new Exception( Brak pliku:.$cfgfile); try { $conf = readconf(); catch(exception $e){//obsuga bledu, np.: echo $e->getmessage(). <br> ; echo $e->gettraceasstring(); //$ Technologie Internetu p. 39

Funkcje anonimowe. Motywacja function _compare($a, $b){ return $b - $a; // end _compare(); usort($tablica, _compare ); funkcja_compare jest wywołana tylko jeden raz, ale musi mieć własna nazwę pomysł na funkcje anonimowe Technologie Internetu p. 40

Funkcje anonimowe $funkcja = function($x, $y){ return $x - $y;; echo $funkcja(5, 3); usort($tablica, $funkcja); usort($tablica, function($a, $b){ return $a - $b;); Technologie Internetu p. 41

Zmiennie wolne i domknięcia f(x,y) = x+y f(x) = x+y, y zmienna wolna Zmienne wolne nie sa ani agrumentami funkcji, ani jej lokalnymi zmiennymi Zmienne wolne otrzymuja wartości z kontekstu nadrzędego, poprzez mechanizm domknięć Zmienne wolne definiuje się słowem kluczowymuse Technologie Internetu p. 42

Domknięcia $products = array( array( name => Gruszki, amount => 23), array( name => Rodzynki, amount => 38) ); $total = 0; array_walk($products, function($element) use(&$total){ $total += $element[ amount ]; ); echo Razem:.$total; Technologie Internetu p. 43

Domknięcia. Fabryka funkcj function returnclosure($argument) { return function($x) use($argument) { return $x + $argument; ; // end returnclosure(); $closureone = returnclosure(7); $closuretwo = returnclosure(5); echo $closureone(6).php_eol; echo $closuretwo(6).php_eol; Technologie Internetu p. 44