Treci la conținutul principal

Modificatori de acces în PHP

Un modificator de acces (numit și cuvânt cheie de vizibilitate) stabilește de unde poate fi folosită o proprietate sau o metodă.

PHP oferă trei astfel de modificatori:

  • public - disponibil de oriunde; aceasta este valoarea implicită
  • protected - disponibil în interiorul clasei și în clasele derivate din ea
  • private - disponibil DOAR în interiorul clasei care îl definește

Notă: Dacă omiți modificatorul, PHP tratează proprietatea sau metoda ca fiind public.


Modificatorul de acces public

Dacă marchezi o proprietate sau o metodă ca public, orice cod poate ajunge la ea, din interiorul sau din exteriorul clasei.

În exemplul următor, codul din afara clasei poate folosi atât proprietatea $name, cât și metoda get_details().

Exemplu public

Codul din afara clasei setează o proprietate publică și apelează o metodă publică:

Prompt
Scrie un script PHP care definește o clasă Fruit cu o proprietate publică $name și o metodă publică get_details(). Creează un obiect Fruit, setează-i direct numele și afișează-l.
Ieșire: script PHP

Modificatorul de acces private

private este cel mai strict modificator: doar codul din interiorul clasei care definește proprietatea sau metoda poate ajunge la ea.

În exemplul următor, $name este privată, așa că accesarea ei directă din afara clasei eșuează.

Exemplu private

Atribuirea unei valori unei proprietăți private din afara clasei provoacă o eroare fatală:

Prompt
Scrie un script PHP care definește o clasă Fruit cu o proprietate privată $name. Creează un obiect Fruit și încearcă să setezi direct proprietatea name pentru a arăta că acest lucru provoacă o eroare.
Ieșire: script PHP

Modificatorul de acces protected

protected se află la mijloc: clasa însăși și clasele derivate din ea (clasele copil) au acces, dar codul din exterior nu are.

În exemplul următor, $name este protejată, așa că accesul direct din exterior nu este permis.

Exemplu protected

Atribuirea unei valori unei proprietăți protejate din afara clasei provoacă o eroare fatală:

Prompt
Scrie un script PHP care definește o clasă Fruit cu o proprietate protejată $name. Creează un obiect Fruit și încearcă să setezi direct numele pentru a arăta că acest lucru provoacă o eroare.
Ieșire: script PHP

protected cu moștenire

O clasă copil are voie să citească o proprietate protejată pe care a moștenit-o:

Prompt
Scrie un script PHP care definește o clasă Fruit cu o proprietate protejată $name și o metodă setType(). Apoi definește o clasă Apple care extinde Fruit și are o metodă getType(). Arată că proprietatea protejată este accesibilă în clasa copil.
Ieșire: script PHP