Objekty v PHP 5 - 1. díl

Tato část pojednává o konstruktorech a destruktorech a také o modifikátorech viditelnosti – o klíčových slovech private, protected a public.

Úvod

V tomto seriálu se budu zabývat především tím, co bude nového v PHP verze 5, a to především po stránce objektového programování, které tvoří hlavní jádro novinek v této verzi PHP. Sami autoři PHP tvrdí, že manipulace s objekty byla pro účely PHP verze 5 kompletně přepsána. A to hlavně kvůli tomu, aby se poskytl vyšší výkon a mnohem více možností.

V tomto seriálu nebudu vysvětlovat principy objektově orientovaného programování. Ani se nebudu věnovat výkladům práce s třídami v PHP. Budu předpokládat, že čtenář má základy práce s objekty, a že umí napsat jednoduchou třídu v PHP verze 4. Naopak se zaměřím na vysvětlení rozdílů, tedy co je nového a co přibylo. Mým cílem je, aby se pozorný čtenář naučil používat třídy v PHP verze 5 se všemi novými možnostmi. Tak tedy jděme na to.

Konstruktory a destruktory

Konstruktory se objevily u tříd v PHP již dříve, není to tedy žádná novinka. Je to prostě metoda, která se automaticky zavolá při vytvoření objektu. Novinkou je, že se změnil název této metody. Zatímco u PHP starší verze se konstruktor jmenuje stejně jako je jméno třídy, u PHP 5 se všechny konstruktory jmenují jednotně __construct.

Pokud ovšem máte napsanou nějakou třídu v předchozí verzi PHP a používáte konstruktory nazvané podle jména třídy, bude to fungovat také. PHP 5 v rámci zpětné kompatibility hledá konstruktory ve starém stylu, pokud nenajde metodu __construct.

Novinkou jsou destruktory, které se automaticky volají při zániku objektu. Všechny destruktory jsou metody s jednotným jménem __destruct.

Konstruktory a destruktory se dají celkem jednoduše vyzkoušet:

<?php
class pokus
{
  function __construct()
  {
    echo `Konstructor<br>`;
  }
 
  function __destruct()
  {
    echo `Destruktor<br>`;
  }
}
 
$objekt = new pokus;
?>

Konstruktory a destruktory se nedědí, tedy pokud máte odvozenou třídu, pak se nevolají konstruktory a destruktory předka. To je vlastně stejné jako v předchozích verzích PHP. Abyste to napravili, musíte v konstruktoru přímo zavolat konstruktor předka. A v destruktoru zrovna tak. Proto musíte při odvozování tříd postupovat u konstruktorů a destruktorů nějak takto:

<?php
class zakladni_trida
{
  function __construct()
  {
    echo `Konstructor základní třídy.<br>`;
  }
 
  function __destruct()
  {
    echo `Destruktor základní třídy.<br>`;
  }
}
 
class podtrida extends zakladni_trida
{
  function __construct()
  {
    parent::__construct();
    echo `Konstruktor podtřídy.<br>`;
  }
 
  function __destruct()
  {
    echo `Destruktor podtřídy.<br>`;
    parent::__destruct();
  }
}
 
$objekt = new podtrida;
?>

Viditelnost

Protože si programátoři v PHP uvědomili potřebu skrývat nějaké členy a metody, objevily se v PHP 5 nová klíčová slova. A to private, protected a public. Slouží k tomu, aby bylo možné omezit přístup k některým částem objektu a ukrýt jej tak před okolním světem.

Datový člen, nebo metoda, která je použita s klíčovým slovem private smí být používána pouze ve třídě, kde je definována. Datový člen, nebo metoda, která je použita s klíčovým slovem protecte smí být navíc používána i v odvozených třídách. A nakonec klíčové slovo public znamená neomezený přístup odkudkoliv.

<?php
class trida
{
  private $a = 1;
  protected $b = 2;
  public $c = 3;
 
  protected function metoda()
  {
    $this->a = 1; // v pořádku
    $this->b = 2; // v pořádku
    $this->c = 3; // v pořádku
  }
}
 
$objekt = new trida;
 
$objekt->a = 1; // nelze
$objekt->b = 2; // nelze
$objekt->c = 3; // v pořádku
 
$objekt->metoda(); // nelze
?>

Viditelnost je tedy dalším pokrokem v přiblížení se skutečnému objektovému programování. Nyní je tedy možné zapouzdřovat data a metody, a není tedy nutné, aby vše bylo veřejné, jako je to v PHP verze 4 a nižší.

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

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

Velká podzimní aktualizace Windows 10 je tady: Co přináší Fall Creators Update

Velká podzimní aktualizace Windows 10 je tady: Co přináší Fall Creators Update

** Po půl roce je tu další aktualizace Windows ** A opět přináší hlavně hromadu drobných kosmetických vylepšení ** Podívali jsme se na ty nejzajímavější

17.  10.  2017 | Jakub Čížek | 186

Jak funguje největší akumulátor v Česku: podívejte se do elektrárny Dlouhé Stráně

Jak funguje největší akumulátor v Česku: podívejte se do elektrárny Dlouhé Stráně

** Přečerpávací vodní elektrárna Dlouhé stráně je obdivuhodné technické dílo ** Stejná turbína vyrábí elektřinu i tlačí vodu zpět do horního jezera ** Strojovna elektrárny je zabudována v podzemí

19.  10.  2017 | David Polesný | 25

Přichází doba hypersonických zbraní. Hrozí zvýšené riziko jaderného konfliktu

Přichází doba hypersonických zbraní. Hrozí zvýšené riziko jaderného konfliktu

** Světové mocnosti vyvíjí nové, nesmírně rychlé zbraně ** Jsou schopné pokořit rychlost Mach 5 ** Tyto zbraně mohou zvýšit riziko rozpoutání válečného konfliktu

19.  10.  2017 | Stanislav Mihulka | 20


Aktuální číslo časopisu Computer

Nový seriál o programování elektroniky

Otestovali jsme 17 bezdrátových sluchátek

Jak na nákup vánočních dárků ze zahraničí

4 tankové tiskárny v přímém souboji