Reklama

zoner.cz | czechia.com | regzone.cz | inshop.cz | zonerpress.cz | zonerantivirus.com | zonerama.cz | knihyfoto.cz | fotoden.cz

interval.cz

OOP v PHP: Statické vlastnosti a metody

15. 02. 2006 | Jakub Mrozek | PHP | Komentáře: 3

PHP nám dovoluje definovat metodu nebo vlastnost jako statickou. Znamená to, že se váže na třídu a nikoli na danou instanci. Statická metoda se definuje frází "static", které se uvádí po klíčových slovech viditelnosti.

Ke statické metodě či vlastnosti není možné přistupovat pomocí pseudoproměnné $this. Statické metody voláme pomocí zápisu JménoTřídy::StatickáMetoda(), vlastnosti pomocí syntaxe JménoTřídy::$StatickáVlastnost.

Pokud chceme přistupovat ke statickým metodám či vlastnostem uvnitř třídy, používáme místo jména třídy klíčová slova self:: nebo parent::.

Následující příklad přiřadí každé instanci jedinečné ID:

<?php 

  class Trida{
  public static $pocitadlo = 0;
  public $id;
  public $pocitadlo_nestaticke = 0;
  public $id_nestaticke; 

    public function __construct(){
    $this->id = self::$pocitadlo++;
    $this->id_nestaticke = $this->pocitadlo_nestaticke++; 

    }
  } 

$instance = new Trida();
echo $instance->id;
echo $instance->id_nestaticke; 

$instance = new Trida();
echo $instance->id;
echo $instance->id_nestaticke; 

?>

Příklad vypíše čtyři čísla (0010), $instance->id bude mít vždy jinou hodnotu, u $instance->id_nestaticke bude vždy hodnota stejná.

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


Další aktuální články na interval.cz

Tematicky související články

Dejte vědět i ostatním o článku

Komentáře ke článku

Přidat nový komentář

Joey

Autor komentáře: Joey

Datum vložení: 08. Září 2011, 07:47:00

$this->id = self::$pocitadlo++;;; tento řádek znamená, že nejdříve se uloží do id = 0 a až následně se zvýší o 1? Jedná se tedy o postfix?
Díky za odpověď, nejsem si jistý.

Alt+F4

Autor komentáře: Alt+F4

Datum vložení: 06. Prosinec 2011, 12:39:25

Víceméně to tak je. I když ve skutečnosti se fakticky ukládá přímo 1. Jinak nejedná se o postfix, ale postinkrement. Další možnosti jsou postdekrement ($i--), preinkrement (++$i) a překvapivě predekrement (--$i).

Jan

Autor komentáře: Jan

Datum vložení: 19. Srpen 2012, 20:41:02

Chcem sa spytat ako teda ovplyvnuje ta statická premenna vysledok pretoze to skusam a stale vyde to iste bez static a aj s. dakujem

Zpět na začátek komentářů | Zpět na začátek článku

Přidat nový komentář

Jméno a e-mail jsou nepovinné. Příspěvky obsahující odkaz jsou moderovány.

Reality bez provize – revoluční realitní portál
pronájem, prodej a koupě realit bez provize.
SSLmarket
Profesionální eshop Zoner inShop od 990 Kč.
Reklama
Reklama

Syndikace

hledáme nové autory | redakce interval.cz | reklama na interval.cz

© ZONER software, a.s., všechna práva vyhrazena. Hosting zajišťuje CZECHIA.COM. SSL certifikáty pro domény. Powered by WordPress.