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
- Zpětné odkazy: jak je nikdy nezískávat
- Budování webu 100+1 na Drupalu: tipy a postřehy
- 7 tipů, které pochopí i laici, když migrujete stránky
- Zoner FOTOden "Dobrý fotograf může být každý"
- Pozvánka na (ne)konferenci Vyhledávače zboží 2013
Tematicky související články
- OOP v PHP: Speciální metody
- OOP v PHP: Magické metody
- OOP v PHP: Viditelnost
- OOP v PHP: Funkce pro spolupráci s OOP
- OOP v PHP: Základy OOP
Dejte vědět i ostatním o článku
Komentáře ke článku
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ý.
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).
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

