Jdi na navigaci předmětu

Persistence

Uchování dat po skončení běhu skriptu.

  • serializace a ukládání do souboru
    • serialize/unserialize
    • json_encode/json_decode
  • databáze

PDO (PHP Data Objects)

PHP Data Objects

  • jednotná abstraktní vrstva pro přístup k datům pro různé DB systémy
    • MySQL, PostgreSQL, MsSQL, SQLite, Oracle, …​
  • připravené dotazy
  • proceduralní nebo objektový přístup

SQL

Připojení

php -m | grep pdo
// PostgreSQL
$dsn = 'pgsql:host=127.0.0.1;port=5432;dbname=testdb;';
$user = 'dbuser';
$password = 'dbpass';
$db = new \PDO($dsn, $user, $password);
// MySQL
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
$db = new \PDO($dsn, $user, $password);
// SQLite
$dsn = 'sqlite:eshop.db';
$db = new \PDO($dsn);

Dotazování

  • PDO :: query

    $query = 'SELECT * FROM `order` WHERE id = 1';
    $statement = $db->query($query);
    foreach($statement as $row) {
        print_r($row);
    }
  • PDOStatement :: fetch

    $query = 'SELECT * FROM `order` WHERE id = :id';
    $statement = $db->prepare($query);
    $statement->execute(["id" => 1]);
    print_r($statement->fetch());

Vkládání

$query = 'INSERT INTO `order` (id, customer_id) VALUES (1, 2)';
$statement = $db->prepare($query);
$statement->execute();

Připravené dotazy

Připravené dotazy

$query = 'SELECT * FROM `order` WHERE id = :order_id';
$statement = $db->prepare($query);
$statement->execute(['order_id' => 1]);
print_r($statement->fetch());
$query = "INSERT INTO `order` (id, customer_id) VALUES (:id, :customer)";
$statement = $db->prepare($query);
$statement->execute([
    'id' => 1,
    'customer' => 2
]);

ActiveRecord

  • návrhový vzor
  • objektově relační mapování (ORM)
  • instance se umí uložit (INSERT, UPDATE)
  • třída umí vyhledávat (SELECT)

DataMapper

  • další návrhový vzor pro ORM
  • doménový objekt neobsahuje CRUD operace (narozdíl od ActiveRecord)
  • mapovací objekt (entity manager)

PHPStorm

  • panel Structure
  • panel Database
    • + → Data sourceSQLite → install driver