Objekty v PHP 5 – 2. díl

V objektovém programování pomocí PHP 5 používáme k definování jednotlivých kroků specifické příkazy, z nichž se dnes seznámíme s funkcí konstant, statických dat, abstraktních dat a jejich funkčními rozdíly.

Statické členy

Každý datový člen, který je členem statickým, existuje pouze pro jednu třídu a je na objektu nezávislý. Definujeme jej i v případech, kdy neexistuje žádný objekt dané třídy. Proto není takto vytvořený datový člen součástí vytvořených objektů. K jeho tvorbě stačí použít klíčové slovo „static“:

<?php
class trida
{
  public static $StatickyDatovyClen = `ahoj`;
 
  public static function StatickaMetoda()
  {
    echo `volání statické metody`;
  }
}
 
trida::StatickaMetoda(); // statické volání
?>

Krom toho je samozřejmě možné statické datové členy je možné použít tam, kde mám informace vážící se ke třídě a ne k objektu. Například jak v tomto počítadle vytvořených objektů:

<?php
class trida
{
  public static $pocet = 0;
 
  function __construct()
  {
    ++trida::$pocet;
  }
}
 
$objekt1 = new trida;
$objekt2 = new trida;
 
echo `Celkově je vytvořeno `,trida::$pocet,` objektů.`;
?>

Konstanty

Konstanta se chová jako statický datový člen, který nemění své hodnoty a patří k určité třídě. Od běžných proměnných se odlišuje tím, že v definici, ani při použití, se nepoužívá znak $. Konstantě navíc není možné přidat vlastnosti přístupu private, protected nebo public. Například:

<?php
class math
{
  const cislo_pi = 3.14;
  const cislo_e = 2.718;

  public function ukaz_pi()
  {
    return self::cislo_pi;
  }
}
 
echo `pi = `,math::cislo_pi,`<br>`;
 
$objekt = new math;
echo `pi = `,$objekt->ukaz_pi(),`<br>`;
?>

Abstraktní třídy a metody

Kromě statických dat je možno v PHP 5 používat i data abstraktní. Jejich smyslem je definovat nějakou funkci v době, kdy ještě nejsou známy konkrétní detaily pro její funkci. Abstraktní třída tak sice může obsahovat abstraktní metody, ale ty nejsou definovány žádným kódem. Slouží pouze k tomu, aby ji bylo možné překrýt konkrétním kódem potomka třídy.

Příkladem může být abstraktní třída, která bude představovat nějaké zvíře. Tato třída může mít abstraktní metodu „NakresliSe“, která příslušné zvíře vykreslí. Protože tato metoda ale neví, o jaké konkrétní zvíře se jedná, tak ani neví, jaké nakreslit. Metoda „NakresliSe“ je totiž abstraktní (bez kódu) a my budeme spoléhat na to, že potomci třídy zvíře dodají kód pro jeho zakreslení. Potomek třídy zvíře může být třeba třída pes, u níž už víme, že bude zakreslen pes, jako například:

<?php
abstract class zvire
{
  abstract public function NakresliSe();
}
 
class pes extends zvire
{
  public function NakresliSe()
  {
    echo `kreslím psa<br>`;
  }
}
 
$objekt = new pes;
$objekt->NakresliSe();
?>

Abstraktní třídy tedy definujeme ty třídy ve stromu dědičnosti, u kterých nepředpokládáme, že bychom nich vytvářeli objekty. Použití klíčového slova „abstract“ přesně zdokumentujeme, které třídy jsou abstraktní. U ostatních nám kompilátor kontroluje, zda obsahují abstraktní metody. PHP však kontroly provádí až za běhu programu a nikoliv v době kompilace.

Diskuze (5) Další článek: Oživeno: Ztratily se vám v ICQ všechny kontakty? Nejste sami!

Témata článku: Software, Programování, PHP, Pes, Echo, Objekt, Díl, Public


Určitě si přečtěte

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

** Vědci spočítali, jak velká by musela být posádka pro vícegenerační let k nejbližší hvězdné soustavě ** Proxima Centauri se nachází 4,3 světelných let od nás ** Za současných technologií bychom k ní letěli 6300 let

Petr Kubala | 52

Apple: naše mapy budou nejlepší na světě. Tajně jsme na nich pracovali několik let

Apple: naše mapy budou nejlepší na světě. Tajně jsme na nich pracovali několik let

** Apple odhalil své plány na zcela nové mapy ** Několik let pracuje na nových mapách, které by měly předběhnout konkurenci ** Objeví se s příchodem iOS 12 pro vybrané státy

Karel Javůrek | 50

Jak dopadl velký den Applu s náloží novinek: Sledujte, co letos připravil

Jak dopadl velký den Applu s náloží novinek: Sledujte, co letos připravil

** Apple večer představil novinky ** Ukáže nové operační systémy, ale čekala se i nová zařízení ** Začíná vývojářská konference Applu WWDC 2018

Karel Javůrek | 87

Alan Turing: Genius, který matematicky stvořil počítač

Alan Turing: Genius, který matematicky stvořil počítač

Řešením matematického problému se dostal k modelu teoretického stroje, který nese jeho jméno a je základem logiky univerzálních počítačů.

Pavel Tronner | 56


Aktuální číslo časopisu Computer

Velký test 18 bezdrátových sluchátek

Vše o přechodu na DVB-T2

Procesory AMD opět porážejí Intel

7 NVMe M.2 SSD v přímém souboji