Jdi na navigaci předmětu

Používání OOP

Abstraktní třídy

  • klíčové slovo abstract
  • sdílení kódu
  • nelze instanciovat
  • v potomcích abstraktní třídy obvykle různé implementace operací
  • třída s alespoň jednou abstraktní metodou musí být sama abstraktní
  • může obsahovat i atributy

Abstraktní třídy

abstract class Image {
  abstract function display();
}

class Jpeg extends Image {
  function display() { ... }
}

Rozhraní

Rozhraní

interface Filesystem {
  function mkdir($path);
  function rmdir($path);
}

class LocalFilesystem implements Filesystem {
  function mkdir($path) { ... }
  function rmdir($path) { ... }
}

Traity

  • klíčové slovo trait, použití use uvnitř třídy
  • náhrada za vícenásobnou dědičnost
  • kdekoliv znovupoužitelný kód
  • přidává kód i do spolu nesouvisejících tříd
  • může pracovat s $this cílové třídy

Traity

trait CRUD {
  public function create(...) {...}
}

class Entity {
  use CRUD;
}

Late static binding

self

  • v čase čtení kódu (compile time)

static

  • v čase běhu kódu (runtime)

Late static binding

class Attachment {
  const TYPE = 'application/octet-stream';
  protected static $sequence = 0;
  public function __construct()
    {
        $this->id = ++self::$sequence;
        $this->type = static::TYPE;
    }
}

Late static binding

class Text extends Attachment
{
    const TYPE = 'text/plain';
}

class JpegImage extends Attachment
{
    const TYPE = 'image/jpeg';
}