Uvedený výčet řešení není kompletní, článek je postupně doplňován.
Knihovny Doctrine
Doctrine ORM
http://www.doctrine-project.org/projects/orm.html
Object Relational Mapper (ORM) pro PHP postavený na vrstvě Database Abstraction Layer (DBAL).
(Možnost zapisovat SQL dotazy v objektově orientovaném dialektu SQL – Doctrine Query Language (DQL) (inspirováno Hibernates HQL)
Doctrine DBAL
http://www.doctrine-project.org/projects/dbal.html
Datavase Abstraction Layer.
- database schema introspection,
- schema management
- and PDO abstraction
Doctrine Migrations
http://www.doctrine-project.org/projects/migrations.html
Doplňkové funkce postavené na DBAL pro verzování schématu databáze a snadné provádění změn.
Framework Laravel
Query Builder
https://laravel.com/docs/queries
Poskytuje praktické rozhraní pro tvorbu a provádění dotazů na databázi.
Získání všech řádků z tabulky:
$users = DB::table('users')->get();
Získání konkrétního záznamu z tabulky:
$user = DB::table('users')->where('name', 'John')->first();
Eloquent ORM
https://laravel.com/docs/eloquent
Poskytuje implementaci ActiveRecord pro práci s databází. Každá tabulka má odpovídající Model určenou pro práci s tabulkou.
Model umožňuje dotazovat, vkládat a měnit data v databázi.
Příklad Modelu:
<?php namespace App; use IlluminateDatabaseEloquentModel; class Flight extends Model { // }
Získání Modelu:
<?php
use AppFlight;
$flights = AppFlight::all();
foreach ($flights as $flight) {
echo $flight->name;
}
Framework Zend 1
Zend_Db
https://framework.zend.com/manual/1.12/en/zend.db.html
Jednoduché SQL rozhraní pro práci s databází.
Zend_Db_Table
https://framework.zend.com/manual/1.12/en/zend.db.table.html
Implementace vzoru Table Data Gateway.
Poskytuje objektově orientované rozhraní k databázové tabulce. Zahrnuje funkce pro běžné operace s tabulkou.
Dotaz volaný nad třídou vrací sadu objektů Zend_Db_Table_Row.
Příklad třídy:
class Bugs extends Zend_Db_Table_Abstract { protected $_name = 'bugs'; }
Zend_Db_Table_Row
https://framework.zend.com/manual/1.12/en/zend.db.table.row.html
Implementace vzoru Row Data Gateway.
Každá třída obsahující vlastní řádek z tabulky.
Slovník
Object Relational Mapper (ORM)
Programovací technika která zajišťuje automatickou konverzi dat mezi relační databází a objektově orientovaným programovacím jazykem.
Návrhové vzory pro práci s ORM:
- Table Data Gateway
- Row Data Gateway
- Active Record
- Data Mapper
Active Record
Objekt, který obaluje řádek v databázové tabulce, zapouzdřuje přístup k databázi, a přidává doménovou logiku.
Table Data Gateway
Návrhový vzor pro práci s datovými zdroji.
Funguje jako brána, která zapouzdřuje databázové operace prováděné nad jednou databázovou tabulkou.
Každá tabulka je v aplikaci reprezentována samostatnou třídou, která obstarává CRUD operace s jednotlivými řádky tabulky.
Jedna instance třídy obsluhuje všechny řádky v tabulce.
Row Data Gateway
Architektonický návrhový vzor pro práci s datovými zdroji.
Funguje jako brána, která zapouzdřuje databázové CRUD operace prováděné nad jedním řádkem tabulky.
Jedna instance třídy obsahuje jeden řádek z tabulky.
Každý atribut třídy odpovídá sloupci v tabulce.
Atributy jsou veřejné (přistupuje se k nim přímo, bez nutnosti používat gettery a settery).
Data Mapper
Návrhový vzor pro práci s datovými zdroji.