Technologie programowania systemów internetowych
description
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