Object-Relational Mapper for PHP

Slides:



Advertisements
Podobne prezentacje
Projektowanie Aplikacji Komputerowych
Advertisements

SQL INJECTION Wykorzystanie błędów w językach skryptowych
SYSTEM INTERNETOWY OLIMPIADY & UNIVERSAL PYTHON FRAMEWORK & UNIVERSAL PYTHON FRAMEWORK Szymon Acedański, Piotr Findeisen, Filip Grządkowski, Michał Jaszczyk,
PHP + MySQL część II.
Marcin Pamuła Mateusz Stefek
Visual Studio Codename „Orcas”, LINQ
25/08/ Języki programowania 1 Piotr Górczyński Obiekty i zdarzenia.
Model – View - Controler
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
ODE Informacje wstępne. Pojęcia podstawowe n Obiektowa baza danych u język komunikacji u ziarnistość obiektów u identyfikacja obiektów n Transakcja -
ZSBD PL/SQL CZĘŚĆ 3 Wykład 5 Prowadzący: dr Paweł Drozda.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Wykład 8 Wojciech Pieprzyca
Hibernate relacje.
Język SQL (Structured Query Language) DDL (Data Definition Language)
Podstawy C# Grupa .NET PO.
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład VIII.
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
SQL - Structured Query Language
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Kurs języka C++ – wykład 8 ( )
PL/SQL – dalsza wędrówka
Programowanie w języku C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Opracowali: Patryk Klemczak Tomasz Klemczak ODSIECZ WIEDEŃSKA.
Kształtowanie się granic II Rzeczypospolitej
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
Entity Framework worth it or not?
Piotr Czapiewski Wydział Informatyki ZUT Wykład 2.
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
WNIOSEK O PRZYZNANIE POMOCY
Machine learning Lecture 3
Program Rozwoju Obszarów Wiejskich
Wybrane bloki i magistrale komputerów osobistych (PC)
Tolerancje i pasowania
B R Y Ł Y P L A T O Ń S K I E.
1 czerwca w zerówce.
Projekt z dnia 30 maja 2017 r. Ustawa z dnia …. ……………
Prezentacje wykonali: Marcin Łukasik Wiktor Kołek
Sprawozdanie roczne z realizacji Planu działania Krajowej Sieci Obszarów Wiejskich na lata za rok 2016 Warszawa, 26 czerwca 2017 r. Materiał.
Srebrna Małopolska regionalne inicjatywy na rzecz seniorów
PHP (wstęp) Personal Home Page Tools (PHP Tools)
O UTWORZENIE ZWIĄZKU METROPOLITALNEGO W WOJEWÓDZTWIE ŚLĄSKIM
Wojewódzki Inspektorat Ochrony Środowiska w Białymstoku
ZAWODOZNAWSTWO Materiały zrealizowane w ramach projektu
Realizacja sprzężenia od siły w układzie sterowania robotem do zastosowań neurochirurgicznych Dorota Marszalik Wieliczka,
Ruch turystyczny w Krakowie w 2015 roku
Adsorpcja faza stała/ gazowa lub ciekła faza ciekła/ gazowa lub ciekła
Ewolucja gwiazd.
Potencjał chemiczny Potencjał chemiczny ma charakter siły uogólnionej,
Nie ma innego – Tylko Jezus Mariusz Śmiałek
R- Punkt referencyjny (wyjściowy) obrabiarki
Parki krajobrazowe na Podlasiu
Publicznej Szkole Podstawowej nr 4 im. Tadeusza Kościuszki
Materiały pochodzą z Platformy Edukacyjnej Portalu
Gimnazjum nr 3 im. J. Chełmońskiego w Zielonej Górze
GMINA RUDZINIEC.
Wykład 7 Prawo urzędnicze.
Wsparcie dla przedsiębiorców oferowane przez Powiatowy Urząd Pracy
MIASTO I GMINA OLESNO WYKONANIE BUDŻETU rok 2012.
Uprawnienia laureatów i finalistów olimpiad przedmiotowych oraz laureatów konkursów przedmiotowych Warszawa, 22 kwietnia 2014 r.
Egzamin gimnazjalny 2012.
Wypalenie zawodowe chorobą współczesnych pracowników
SZKOŁA PROMUJĄCA ZDROWIE GIMNAZJUM PUBLICZNE IM
Strukturalny język zapytań SQL - historia
Object vs. class (rozdzial 13 The NEURON book)
Zapis prezentacji:

Object-Relational Mapper for PHP IStorable Object-Relational Mapper for PHP

Plan prezentacji Strukturalne podejście do zapisywania bytów w relacyjnej bazie danych Podejście obiektowe Projekt IStorable Klasa IStorableImplBase Zapisywanie Odczytywanie I wiele innych sprytnych rzeczy Copyright © Rafal Skoczylas

Tradycyjne podejście Byty odseparowane od sposobu ich zapisywania przechowywania Ręczne zapisywanie bytów oraz powiązań między nimi Ręczne odczytywanie z bazy i mapowanie na byty Copyright © Rafal Skoczylas

Książka adresowa class Address { public $id; public $street; public $city; } class Person public $name; public $age; public $address; Copyright © Rafal Skoczylas

Tradycyjne zapisywanie $db = new PDO("sqlite://plik.db"); $p = new Person(); $p->address = new Address(); $db->query("insert into Address(street, city) values('".$p->address->street."', '".$p->address->city."')"); $db->query("insert into Person(name, age, address) values('".$p->name."', '".$p->age."', $db->lastInsertId)"); Copyright © Rafal Skoczylas

IStorableImplBase class Address extends IStorableImplBase { public $street; public $city; } class Person extends IStorableImplBase public $name; public $age; public $address; Copyright © Rafal Skoczylas

Zapisywanie z IStorable $db = new PDO("sqlite://plik.db"); $p = new Person($db); $p->address = new Address($db); $p->Store(); Copyright © Rafal Skoczylas

Tradycyjne odczytywanie $a = new Address(); $p = new Person(); $db = new PDO("sqlite://plik.db"); $row = $db->query("select name, age, address from Person where name = 'Smith'")->FetchAll(); $p->name = $row['name']; $p->name = $row['age']; $row = $db->query("select street, city from Address where id = ".$row['address'])->FetchAll(); $a->street = $row['street’]; $a->city = $row['city’]; $p->address = $a; Copyright © Rafal Skoczylas

IStorable - Odczytywanie $db = new PDO("sqlite://plik.db"); $p = IStorableLoader::Load('Person', 'name', 'Smith'); Copyright © Rafal Skoczylas

Kontrola zawartości zmiennych Run-time content checking class Person { public /** @regex: ^[a-zA-Z0-9]+$ */ $name; } Run-time type checking public /** @object: Address */ $obiekt_typu_Address; public /** @object?: Address */ $obiekt_typu_Address_lub_null; public /** @array: Address */ $tablica_Addressow; public /** @array?: Address */ $tablica_Addressow_lub_null; Copyright © Rafal Skoczylas

Jeszcze więcej… Kaskadowe usuwanie obiektów class Person { public /** @cascade; @object: Address */ $address; } $p = new Person($db); $p->address = new Address($db); $p->Store(); $p->Delete(); /* usuwa również $p->address */ Copyright © Rafal Skoczylas

Lazy loading class Person { public /** @regex: ^[a-zA-Z0-9]+$ */ $name; public /** @object: Address */ $address; } $p = IStorableLoader::Load('Person', 'id', 21); /* $p->address nie jest od razu ładowane z bazy; dopiero podczas pierwszego użycia: */ echo $p->address->$street; Copyright © Rafal Skoczylas

Oraz kilka innych $p->CreateTables() – na podstawie definicji klasy, tworzy odpowiedni schemat bazy danych, tak aby można było zapisać obiekt $p i kilka innych ciekawych rzeczy Klasa dostępna jest pod adresem http://rafal.skoczylas.pl/IStorable/IStorable.inc Dokumentacja i większe możliwości wkrótce ;-) Copyright © Rafal Skoczylas

Dziękuję