Viditeľnosť premenných, najmä pri vlastnostiach a metódach v objektovo orientovanom programovaní, je kľúčový koncept, ktorý je mimoriadne dôležitý pre každého vývojára. Najmä v PHP určujú modifikátory viditeľnosti public, private a protected, kto má prístup k určitým vlastnostiam a metódam. Tieto koncepty pomáhajú implementovať enkapsuláciu údajov, čím sa objektovo orientované programy stávajú robustnejšími a udržateľnejšími. V tejto príručke sa naučíš, ako sú tieto modifikátory používané a aké následky môžu mať na štruktúru tvojho programovania.

Najdôležitejšie zistenia

  • public: vlastnosti sú prístupné zo všetkých miest.
  • private: vlastnosti sú prístupné iba v rámci samotnej triedy.
  • protected: vlastnosti sú prístupné v rámci triedy a odvozených tried.

Príručka krok za krokom

1. Vytvorenie jednoduchej triedy s verejnou vlastnosťou

Ako úvod vytvoríme triedu Auto, v ktorej definujeme verejnú vlastnosť s názvom Rýchlosť. To ti poskytne jasný obraz o tom, ako môžeš na túto vlastnosť pristupovať zvonku.

Viditeľnosť vlastností v PHP – public, private & protected

Teraz môžeš vytvoriť objekt tejto triedy:

Viditeľnosť vlastností v PHP – public, private & protected

Akonáhle nastavíš rýchlosť auta na 30, 50 alebo dokonca 130, nemáš žiadne obmedzenia – to je sila verejnej viditeľnosti.

2. Zavedenie maximálnej rýchlosti s privátnou vlastnosťou

Teraz pridáme privátnu vlastnosť maximálnarýchlosť a zmeníme metódu tak, aby nastavovala len povolené rýchlosti. Týmto spôsobom môžeš zabezpečiť, že sa priraďujú iba platné hodnoty.

Pomocou tejto metódy môžeš nastaviť rýchlosť a zároveň zabezpečiť, že nedôjde k chybám v dôsledku príliš vysokých hodnôt.

Viditeľnosť vlastností v PHP – public, private a protected

3. Používanie getter a setter metód pre privátne vlastnosti

Ako je maximálnarýchlosť privátna, môžeš ju sprístupniť iba prostredníctvom metód v rámci triedy. Nasledujúci príklad ukazuje, ako implementovať getter a setter metódy.

Viditeľnosť vlastností v PHP – public, private & protected

Prostredníctvom týchto metód dosiahneš enkapsuláciu a kontrolu nad vlastnosťami zvonku.

Viditeľnosť vlastností v PHP – public, private & protected

4. Pochopenie protected modifikátora

Teraz sa pozrieme na protected modifikátor. Ten poskytuje triedam, ktoré dedí od iných tried, prístup k určitým vlastnostiam. To znamená, že podtriedy môžu naďalej používať alebo prepisovať konkrétnu metódu alebo vlastnosť.

Viditeľnosť vlastností v PHP – public, private & protected

V tomto prípade môže pretekárske auto pristupovať k ochrannej vlastnosti, zatiaľ čo vonkajšie triedy k tomu nemajú prístup. Týmto sa umožňuje kódovanie špecifického správania pre odvozené triedy.

5. Rozhodovanie o viditeľnosti

Dôležité rozhodnutie, ktoré musíš urobiť, sa týka viditeľnosti tvojich vlastností. Základne by si mal používať privátne vlastnosti, pokiaľ nie je zrejmé, že nejaká vlastnosť je potrebná v rámci dedičstva. V takom prípade zvoľ protected.

Viditeľnosť vlastností v PHP – public, private a protected

Pritom nezabúdaj, že ak si v štádiu údržby alebo pracuješ na novej funkcii, svoje prístupové kontroly môžeš neskôr zmeniť, ak to bude potrebné.

Zhrnutie – Viditeľnosť vlastností: public, private a protected v PHP

Viditeľnosť vlastností v PHP je rozhodujúca pre porozumenie enkapsulácii údajov a objektovo orientovanému programovaniu. S modifikátormi public, private a protected môžeš dosiahnuť presnosť a kontrolu nad prístupom k vlastnostiam a metódam vo svojich triedach. Správnym použitím týchto princípov výrazne zlepšíš údržbovosť a bezpečnosť svojho kódu.

Často kladené otázky

Čo znamená public v PHP?public znamená, že vlastnosť alebo metóda je prístupná z akéhokoľvek miesta.

Čo znamená private v PHP?private znamená, že vlastnosť alebo metóda môže byť volaná iba vlastnou triedou.

Čo znamená protected v PHP?protected znamená, že vlastnosť alebo metóda môže byť volaná vlastnou triedou a odvozenými triedami.

Kedy by som mal použiť private?Mal by si štandardne používať private, aby si maximalizoval viditeľnosť a kontrolu.

Kedy môžem prejsť na protected?Prejdi na protected, ak je vlastnosť potrebná v odvozených triedach a chceš zabrániť prístupu zvonka.