390 likes | 550 Views
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.
E N D
Piotr Czapiewski Wydział Informatyki ZUT Technologie programowania systemów internetowych Wykład 2
Zmienna $this • $this – bieżący obiekt
Zmienna $this – zagrożenia • W ciele metody – użycie $this jest konieczne • $this->nazwa – pole klasy • $nazwa – zmienna lokalna Wynik: hau hau<br> Wynik: <br>
Zmienna $this – zagrożenia • W metodzie statycznej – odnosi się do obiektu wołającego
Zmienna $this – zagrożenia • W metodzie statycznej – odnosi się do obiektu wołającego
Przypisywanie obiektów • 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" }
Przypisywanie obiektów • Trzy różne zachowania • Przypisanie • Referencja • Klonowanie
Przypisanie a referencja 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"]=> string(7) "hau hau" }
Przypisanie a referencja NULL NULLobject(Zwierze)#1 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> string(7) "hau hau" }
Klonowanie obiektów • $klon =clone $oryginal • Kopia wszystkichwłaściwości obiektu • Opcjonalnie: funkcja __clone() object(Zwierze)#1 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> NULL } object(Zwierze)#2 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> NULL } object(Zwierze)#1 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> string(5) "wrrrr" } object(Zwierze)#2 (2) { ["gatunek"]=> string(4) "pies" ["odglos"]=> NULL }
Dziedziczenie • 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
Iteracja po cechach obiektu var1 => value 1 var2 => value 2 var3 => value 3
Iteracja po cechach obiektu var1 => value 1 var2 => value 2 var3 => value 3 MyClass::iterateVisible: var1 => value 1 var2 => value 2 var3 => value 3 prot => protectedvar priv => privatevar
Obsługa wyjątków • Standardowe funkcje i wyrażenia nie rzucają wyjątków • Wynik:
Obsługa wyjątków • Rozwiązanie: set_error_handler()
Dostęp do baz danych PHP Data Objects (PDO)
Dostęp do baz danych w PHP • Klasyczny sposób dostępu do danych • Osobne biblioteki dla różnych baz danych • Dostępne biblioteki dla kilkunastu baz, w tym MySQL, PostgreSQL, Oracle, Informix, DB2, Microsoft SQL Server, Firebird, Paradox, Sybase, SQLite • PDO – PHP Data Objects • Warstwa abstrakcji dostępu do danych • Dostęp do różnych baz danych za pomocą jednego interfejsu • Nie rozwiązuje problemu niezgodności wersji SQL
Połączenia trwałe • 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ść
Transakcje • Rozpoczęcie transakcji • $dbh->beginTransaction(); • Zatwierdzenie transakcji • $dbh->commit(); • Wycofanie transakcji • $dbh->rollBack();
Obsługa błędów • 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