Dereference je možnost odkazování na metodu či vlastnost, která obsahuje další objekty, z nich chceme použít nějakou vlastnost či metodu jiného objektu.

K odkazování se používá notace ->. Podívejte se na tento příklad:

<?php 
  class TridaBudeVolana{ 
    public function VypisHeslo(){ 
      echo 'Vypiš heslo'; 
    } 
  } 

  class TridaVola{ 
    public function VolejTridu(){ 
      return new TridaBudeVolana; 
    } 
  } 
   
$ins = new TridaVola; 
$ins->VolejTridu()->VypisHeslo(); 
?>

Nejprve tedy vytváříme instanci, voláme třídu VolejTridu(), ta vytváří instanci třídy TridaBudeVolana, ze které následně chceme volat metodu VypisHeslo().

Takové zanořování je neomezené, tedy je možné volat i následující skript:

<?php 
  class TridaBudeVolana{ 
    public function VypisHeslo(){ 
      echo 'Vypiš heslo'; 
    } 
  } 

  class TridaVola{ 
    public function VolejTridu(){ 
      return new TridaZanorena; 
    } 
  } 

  class TridaZanorena{ 
      public function VolejTriduDalsi(){ 
      return new TridaZanorenaJesteVice; 
    } 
  } 

  class TridaZanorenaJesteVice{ 
      public function VolejTriduJesteDalsi(){ 
      return new TridaBudeVolana; 
    } 
  } 

$ins = new TridaVola; 
$ins->VolejTridu()->VolejTriduDalsi()-> 
      VolejTriduJesteDalsi()->VypisHeslo(); 
?>

Pozn. red.: Zdůrazňujeme, že tento text se týká PHP 5.

1 Příspěvěk v diskuzi

Odpovědět