Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

IStorable Object-Relational Mapper for PHP. Plan prezentacji Strukturalne podejście do zapisywania bytów w relacyjnej bazie danychStrukturalne podejście.

Podobne prezentacje


Prezentacja na temat: "IStorable Object-Relational Mapper for PHP. Plan prezentacji Strukturalne podejście do zapisywania bytów w relacyjnej bazie danychStrukturalne podejście."— Zapis prezentacji:

1 IStorable Object-Relational Mapper for PHP

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

3 Tradycyjne podejście Byty odseparowane od sposobu ich zapisywania przechowywaniaByty odseparowane od sposobu ich zapisywania przechowywania Ręczne zapisywanie bytów oraz powiązań między nimiRęczne zapisywanie bytów oraz powiązań między nimi Ręczne odczytywanie z bazy i mapowanie na bytyRę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 $id; 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 checkingRun-time content checking class Person { public ^[a-zA-Z0-9]+$ */ $name; } Run-time type checkingRun-time type checking class Person { 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ówKaskadowe 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$p->CreateTables() – na podstawie definicji klasy, tworzy odpowiedni schemat bazy danych, tak aby można było zapisać obiekt $p i kilka innych ciekawych rzeczyi kilka innych ciekawych rzeczy Klasa dostępna jest pod adresemKlasa dostępna jest pod adresem –http://rafal.skoczylas.pl/IStorable/IStorable.inc Dokumentacja i większe możliwości wkrótce ;-)Dokumentacja i większe możliwości wkrótce ;-) Copyright © Rafal Skoczylas

14 Dziękuję


Pobierz ppt "IStorable Object-Relational Mapper for PHP. Plan prezentacji Strukturalne podejście do zapisywania bytów w relacyjnej bazie danychStrukturalne podejście."

Podobne prezentacje


Reklamy Google