Technologie programowania systemów internetowych

Post on 10-Jan-2016

56 views 0 download

description

Piotr Czapiewski Wydział Informatyki ZUT. Technologie programowania systemów internetowych. Wykład 2. Programowanie obiektowe w PHP. Definicja klasy. Tworzenie obiektu. Konstruktor. Konstruktor – wartości domyślne. Zmienna $ this. $this – bieżący obiekt. Zmienna $ this – zagrożenia. - PowerPoint PPT Presentation

Transcript of Technologie programowania systemów internetowych

Piotr CzapiewskiWydział Informatyki ZUT

Wykład 2Wykład 2

$this – wskazuje na bieżący obiekt

W ciele metody – użycie $this jest konieczne $this->nazwa – pole klasy $nazwa – zmienna lokalna

Wynik:hau hau<br>

Wynik:hau hau<br>

Wynik:<br>

Wynik:<br>

W metodzie statycznej – odnosi się do obiektu wołającego

W metodzie statycznej – odnosi się do obiektu wołającego

Przypisanie istniejącego obiektu do nowej zmiennej

Nowa zmienna będzie odnosić się do tej samej instancji

object(Zwierze)#1 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> NULL } object(Zwierze)#1 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> NULL }

object(Zwierze)#1 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> string(7) "hau hau" } object(Zwierze)#1 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> string(7) "hau hau" }

object(Zwierze)#1 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> NULL } object(Zwierze)#1 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> NULL }

object(Zwierze)#1 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> string(7) "hau hau" } object(Zwierze)#1 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> string(7) "hau hau" }

Trzy warianty:

Przypisanie

Referencja

Klonowanie

Zwierze{ gatunek : "pies"

}

Zwierze{ gatunek : "pies"

}

$a$a $b$b $c$c

Zwierze{ gatunek : "żyrafa" }

Zwierze{ gatunek : "żyrafa" }

$a$a $b$b $c$c

Zwierze{ gatunek : "żyrafa" }

Zwierze{ gatunek : "żyrafa" }

$a$a $b$b $c$c

Zwierze{ gatunek :

"kot" }

Zwierze{ gatunek :

"kot" }

Zwierze{ gatunek : "pies"

}

Zwierze{ gatunek : "pies"

}

$a$a $b$b $c$c

$klon = clone $oryginal

Kopia wszystkichwłaściwości obiektu

Opcjonalnie:funkcja __clone()

Zwierze{ gatunek : "pies"

}

Zwierze{ gatunek : "pies"

}

$a$a $b$b

Zwierze{ gatunek : "pies"

}

Zwierze{ gatunek : "pies"

}

Brak dziedziczenia wielorakiego Można nadpisać metody klasy bazowej Dostęp do nadpisanych metod klasy

nadrzędnej – parent::

Nie można nadpisać metody zdefiniowanej jako final

var1 => value 1var2 => value 2var3 => value 3

var1 => value 1var2 => value 2var3 => value 3

var1 => value 1var2 => value 2var3 => value 3

MyClass::iterateVisible:var1 => value 1var2 => value 2var3 => value 3prot => protected varpriv => private var

var1 => value 1var2 => value 2var3 => value 3

MyClass::iterateVisible:var1 => value 1var2 => value 2var3 => value 3prot => protected varpriv => private var

Standardowe funkcje i wyrażenia nie rzucają wyjątków

Wynik:

Rozwiązanie: set_error_handler()

PHP Data Objects (PDO)

Array( [id] => 2 [0] => 2 [tytul] => PHP dla opornych [1] => PHP dla opornych [autor] => Jan Kowalski [2] => Jan Kowalski [wydawnictwo] => 2 [3] => 2)

Array( [id] => 2 [0] => 2 [tytul] => PHP dla opornych [1] => PHP dla opornych [autor] => Jan Kowalski [2] => Jan Kowalski [wydawnictwo] => 2 [3] => 2)

Zwykłe połączenie jest zamykane po zakończeniu skryptu

Połączenie trwałe jest zachowywane do późniejszego wykorzystania

Poprawa wydajności Nie wpływa na funkcjonalność

Rozpoczęcie transakcji $dbh->beginTransaction();

Zatwierdzenie transakcji $dbh->commit();

Wycofanie transakcji $dbh->rollBack();

Tryby obsługi błędów w PDO Tryb cichy – PDO::ERRMODE_SILENT

▪ W razie wystąpienia błędu ustawiane są kody błędu w obiektach PDO

▪ Informacje o błędzie do pobrania za pomocą:PDO::errorCode(), PDO::errorInfo()

Tryb ostrzeżeń – PDO::ERRMODE_WARNING

▪ Dodatkowo emitowane ostrzeżenie

Tryb wyjątków – PDO::ERRMODE_EXCEPTION

▪ Rzucany jest wyjątek PDOException

Biblioteka Doctrine ORM

Konfiguracja

Generowanie mapowania na podstawie istniejącej bazy danych

Generowanie klas encji na podstawie mapowania

doctrine.bat orm:convert:mapping --from-database xml config\xmldoctrine.bat orm:convert:mapping --from-database xml config\xml

doctrine.bat orm:generate:entities modeldoctrine.bat orm:generate:entities model

bootstrap.php, cli-config.phpbootstrap.php, cli-config.php

Zapytanie w języku DQL

Edycja istniejącego obiektu

Tworzenie nowego obiektu