OOP v PHP: Základy OOP

15. února 2006

Termín OOP znamená objektově orientované programování (dále už jen OOP), což je způsob programování, kdy chápeme procesy jako entity. Tedy zkráceně řečeno, nepotřebujeme vědět, jak daný program funguje, ale musíme vědět, jak tento program používat.

Na rozdíl od procedurálního programování, v OOP jsou data a funkce navzájem svázány do struktury, nazývané objekt. Třída je šablonou objektu, volání třídy se pak označuje jako instance. Pojmy instance a objekt jsou v podstatě synonyma. Často však mluvíme o konkrétním objektu jako o instanci, termín objekt se používá, pokud mluvíme o objektech obecně. S oblibou pak rozdíl mezi objektem a třídou vysvětluji tak, že objekt je vyjádřením třídy v reálném světě (i když to může být trochu zavádějící).

Jak napsat svoji první třídu? Definice třídy se skládá z klíčového slova class následovaného názvem třídy a párem složených závorek. Název třídy může být cokoli s výjimkou vyhrazených slov.

Je asi vhodné zmínit se hned na začátku o konvencích v pojmenování tříd. Pojmenování tříd se řídí takzvanou velbloudí notací (camel caps) – každé slovo v názvu třídy začíná velkým písmenem, ostatní jsou malá. Podívejme se, jak může vypadat naše první třída:

<?php 
  class Trida{} 
?>

Třídu vždy ukládejte do samostatného souboru. Není to přímo podmínkou (jako třeba v Javě), ale má to své výhody, jak poznáte v budoucnosti. Soubor pak pojmenujte stejně jako třídu, v našem případě Trida.php.

Definici třídy tvoří atributy a metody. Atributy prozatím chápejme jako klasické proměnné a metody jako funkce.

Některé metody třídy mají zvláštní pojmenování a mají jen určitý význam. Takové metody začínají předponou __ (dvě podtržítka). Nejpoužívanější takovou metodou je konstruktor. Konstruktor je metoda, která se vykoná při vytváření každé instance třídy (každém volání třídy). Konstruktor provádí operace prvotního nastavení třídy. Podívejte se na následující příklad:

<?php 
  class Trida{ 
  private $vek; 
    public function __construct($vek){ 
    $this->vek = $vek; 
    } 
   
    public function kolikJeVamRoku(){ 
    return $this->vek; 
    } 
  } 
$volani_tridy = new Trida(20); 
echo $volani_tridy->kolikJeVamRoku(); 
?>

Zápis private $vek označuje definici atributu $vek. Klíčové slovo private označuje viditelnost (viditelnost je vysvětlena jinde – prozatím stačí vědět, že jsme definovali atribut třídy). Dále public function __construct() znamená volání konstruktoru třídy Trida. Tato metoda způsobí, že atributu $vek je přiřazena hodnota $vek. Metoda public function KolikJeVamRoku() vrací hodnotu atributu $vek.

Pojmenování metod a atributů se opět řídí velbloudí notací, ovšem s tím rozdílem, že první písmeno je mále. Zápis $this->atribut v lidské řeči znamená „odkazuji na atribut $atribut ze současné třídy“. Zapamatujte si, že $this je pseudoproměnná, která se odkazuje na aktuální instanci, tedy na instanci, ve které se nachází! Pokud byste takto atribut volali mimo třídu, program by skončil fatální chybou.

Možná vás zaujalo klíčové slovo new. Co to znamená? Právě takto se vytváří nová instance třídy. Zápis $volani_tridy = new Trida(20); tedy znamená „vytvoř novou instanci třídy Trida a rovnou předej hodnotu 20 konstruktoru“. Konstruktor, stejně jako ostatní metody, může používat i nepovinné parametry:

<?php 
  class Trida{ 
  private $vek; 
    public function __construct($vek = 20){ 
    $this->vek = $vek; 
    } 
   
    public function kolikJeVamRoku(){ 
    return $this->vek; 
    } 
  } 
$volani_tridy = new Trida(); 
echo $volani_tridy->kolikJeVamRoku(); 
?>

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

Předchozí článek santino-corleone.com
Další článek OOP v PHP: Dědičnost
Štítky: oop-php

Mohlo by vás také zajímat

Nejnovější

9 komentářů

  1. maathy

    Úno 23, 2011 v 22:03

    Je to peknej clanek, chtel bych si ho vytisknout, akorat tu chyby verze pro tisk…. Skoda…. Nebo se to snad nejak dá?….

    Odpovědět
  2. mstr

    Úno 24, 2011 v 22:24

    Výborné! Asi jsem neviděl tak srozumitelný výklad základů OOP. Na malém prostoru je vysvětlena filosofie OOP i s příklady.

    Odpovědět
  3. Jan Valenta

    Lis 17, 2011 v 13:16

    Nemohl jsem to jinde pochopit a zde je to krásně vysvětlené. Děkuji za tento článek.

    Odpovědět
  4. Anonym

    Čvn 20, 2013 v 11:31

    Je to špicovní! Diky moc!

    Odpovědět
  5. Pixworx

    Říj 23, 2013 v 15:18

    Super tiež som to pochopil až z tohoto článku. Ďakujem.

    Odpovědět
  6. MiJa

    Bře 11, 2014 v 17:49

    Proc?! Proc je OOP lepsi? Nechapu…
    Vzdyt ten posledni priklad se da mnohem jednoduseji napsat bez OOP:

    function kolikJeVamRoku(){
    return 20;
    }
    echo kolikJeVamRoku();

    a ten prvni:

    function kolikJeVamRoku($vek){
    return $vek;
    }
    echo kolikJeVamRoku($vek);

    Na co je OOP vlastne dobry?!

    Odpovědět
    • Michal

      Srp 21, 2015 v 9:06

      OOP je vhodné používat pro složitější programy. Tyto příklady jsou jednoduché skripty, které slouží pouze pro vysvětlení základů OOP PHP. Těžko Vám bude někdo vysvětlovat základy na rozsáhlém programu, kde by jste se už ze začátku ztratila. Článek je perfektní! :) Díky

      Odpovědět
  7. tomas262

    Čvc 9, 2014 v 12:33

    MiJa: no když chceš třeba použít PHP framework, měl bys chápat, jak funguje OOP … proč použít framework? to je zase na jinou diskusi

    Odpovědět
  8. Roman

    Říj 3, 2014 v 14:16

    MiJa > v clanku je hodne jednoduchy priklad, aby si pochopil ako sa objekty pisu. V com je OOP lepsie pochopis pri zlozitejsich ukonoch.

    Odpovědět

Napsat komentář: MiJa Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *