Jdi na navigaci předmětu

Návrhové vzory

ActiveRecord

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

Příklad použití

<?php
...
// create product
$product = new Product("Tesla 3", 1_500_000);
$product->save();

// get all products
$products = Product::all();

// get specific product by its identifier
$product = Product::find(1);

// update product
$product->setName("Toyota Corolla Cross");
$product->save();

// delete product
$product->delete();
...

Struktura třídy AbstractModel

<?php

abstract class AbstractModel {
  /** @return AbstractModel[] */
  public static function all(): ?array {
    // TODO: implement me
  }

  public static function find(int $id): ?AbstractModel {
    // TODO: implement me
  }

  public function save(): bool {
    // TODO: implement me
  }

  public function delete(): bool {
    // TODO: implement me
  }
}

DataMapper

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