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žší.

Diskuze (5) Další článek: HP: pojďme porazit IBM a Dell

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


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

Temný režim a spousta vychytávek. Vyzkoušeli jsme nový macOS 10.14 Mojave

Temný režim a spousta vychytávek. Vyzkoušeli jsme nový macOS 10.14 Mojave

** Vyzkoušeli jsme veřejnou betu macOS 10.14 Mojave ** Hlavní novinkou je temný režim a velký důraz na soukromí ** Jako první beta je systém překvapivě rychlý a dobře použitelný.

Martin Miksa | 35

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 | 58

USB-C už mělo být všude, ale není. Tak kde to vázne?

USB-C už mělo být všude, ale není. Tak kde to vázne?

** Konektor USB-C byl představen už před čtyřmi roky ** Praktické univesrzální rozhraní však stále není rozšířeno ** Výrobcům hardwaru se do změny moc nechce

David Polesný, Vladislav Kluska | 87

Odposlouchávali jsme děravou domácnost: Katka z Brightonu právě sedí doma, zatímco její manžel hraje asi golf

Odposlouchávali jsme děravou domácnost: Katka z Brightonu právě sedí doma, zatímco její manžel hraje asi golf

** Na internetu jsou tisíce nezabezpečených chytrých domácností ** Podívali jsme se na jednu z britského Brightonu ** Útočník sestaví kompletní socioekonomický profil rodiny

Jakub Čížek | 24

Jak a proč používat alternativní DNS: Zrychlí internet a odblokuje weby

Jak a proč používat alternativní DNS: Zrychlí internet a odblokuje weby

** Alternativní DNS servery mohou zpříjemnit surfování na internetu ** Existuje několik ověřených alternativ, nejen známé DNS od Googlu ** Alternativní DNS však mají i své nevýhody, pozor na ně

Petr Březina | 31

Jak John Kemeny a Thomas Kurtz stvořili BASIC, základ novodobého programování

Jak John Kemeny a Thomas Kurtz stvořili BASIC, základ novodobého programování

** Programovací jazyk BASIC tvořil základ osobních počítačů ** Původně byl určen vysokoškolským studentům, aby vůbec byli schopni využívat univerzitní počítač ** Jeden ze spoluautorů dělal výpočtáře Einsteinovi

Pavel Tronner | 78


Aktuální číslo časopisu Computer

Jak mobily určují svoji polohu?

Velký test notebooků pro studenty

Nejlepší reproduktory na párty

Služby a aplikace pro výuku angličtiny