Enkapsulacja (inaczej hermetyzacja) polega na ukrywaniu widoczności funkcji i właściwości klas przed obiektami, które nie mają mieć do nich dostępu. Pozwolenie mogą mieć jedynie klasy powiązane ze sobą, na przykład poprzez dziedziczenie.

PHP udostępnia trzy modyfikatory dostępu:

  • public (publiczny) – dostęp do funkcji i właściwości danej klasy ma każdy obiekt,
  • private (prywatny) – najbardziej restrykcyjny modyfikator i działa tylko w obrębie danej klasy, dla jej wewnętrznych potrzeb; aby uzyskać dostęp do prywatnych elementów klasy stosuje się publiczne metody setName($value) i getName() – tzw. settery i gettery,
  • protected (chroniony) – działa podobnie jak private, ale zapewnia widoczność elementów również klasom dziedziczonym.

PUBLIC

Jeśli chodzi o modyfikator public, to nie wymaga on szczegółowych analiz. Jeśli nie stosujesz enkapsulacji (czego nie zalecam!), to domyślnie każda funkcja i zmienna w programie ma tenże modyfikator, np:

PRIVATE

Dostęp do prywatnych elementów klasy uzyskuje się poprzez publiczne metody setName($value) i getName(). Pierwsza ustawia wartość zmiennej, a druga zwraca tą wartość. Nic skomplikowanego 🙂

Przykład:

Spróbuj teraz odczytać np: zmienną $brand_car a przekonasz się, że nie będzie to możliwe:

Otrzymasz błąd:
Fatal error: Uncaught Error: Cannot access private property Car::$brand_car in …
Tak więc modyfikator dostępu private działa bez zarzutu 🙂

PROTECTED

Dostęp do funkcji i właściwości chronionych musi być zainicjowany w publicznym konstruktorze. Konstruktor to metoda wykonywana automatycznie w chwili tworzenia obiektu.

Przykład:

Jak już wiemy, dostęp protected dotyczy również klas dziedziczonych.

Przykład:

Czytaj dalej: PRZESTRZENIE NAZW →