Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Object-Relational Mapper for PHP

Podobne prezentacje


Prezentacja na temat: "Object-Relational Mapper for PHP"— Zapis prezentacji:

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

2 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

3 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

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

5 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

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

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

8 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

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

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

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

12 Lazy loading class Person {
public ^[a-zA-Z0-9]+$ */ $name; public 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

13 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 Dokumentacja i większe możliwości wkrótce ;-) Copyright © Rafal Skoczylas

14 Dziękuję


Pobierz ppt "Object-Relational Mapper for PHP"

Podobne prezentacje


Reklamy Google