Ostatnia aktualizacja:

1 września 2025

Opublikowano:

23 maja 2017

Magiczne metody PHP

Magiczne metody PHP

Magiczne metody w PHP’ie, to metody z zarezerwowanym prefiksem w postaci podwójnego podkreślenia „__”. Funkcje te nie są bezpośrednio używane przez programistę, lecz są one automatycznie wywoływane przez interpreter w odpowiedzi na poszczególne zachowania danej klasy, dlatego są nazwane ‘magicznymi’.

W tym artykule dowiesz się:
  1. __construct()
  2. __destruct()
  3. __get()
  4. __set()
  5. __call()
  6. __callStatic()
  7. __isset()
  8. __sleep()
  9. __wakeup()
  10. _toString()
  11. __invoke()
  12. _clone()

__construct()

Funkcja odpala się w momencie utworzenia obiektu, wykorzystujemy ją do przygotowania wszystkich potrzebnych danych dla klasy przed rozpoczęciem pracy.

      {
        echo ‘Wywołano konstruktor’;
      }

__destruct()

Destruktor jak wskazuje nazwa, wywoływany jest na zakończenie pracy danego obiektu przez garbage collector, zwalniając zajęte przez klasę zasoby. Możemy go wykorzystać np. do zamknięcia wcześniej otwartego pliku we wnętrzu klasy albo rozłączenie z bazą danych.

public function __destruct() 
  {
            fclose($this->file);
    }

__get()

Wywoływana jest, gdy próbujemy się dostać do własności lub zmiennej w klasie, która nie istnieje, lub nie mamy do niej dostępu. Przyjmuje jeden argument, który jest nazwą pola, do którego próbujemy się odnieść.

public function __get($name)
  {
   echo ‘Pole ‘.$name.’ nie istnieje lub nie masz do niego dostępu’;
  }

__set()

Funkcja wykonuje się, gdy próbujemy przypisać wartość do zmiennej, która nie istnieje lub nie mamy do niej dostępu. Przyjmuje 2 argumenty, pierwszy z nazwą pola, a drugi z wartością jaką próbowaliśmy przypisać.

public function __set($name, $value)
  {
   echo ‘Nie można przypisać wartości : ‘.$value.’ do pola ‘.$name;
  }

__call()

Odpala się w momencie gdy próbujemy uzyskać dostęp do metody, która nie istnieje lub nie mamy do niej dostępu. Przyjmuje ona 2 argumenty, pierwszy z nazwą metody, do której chcieliśmy uzyskać dostęp, a drugi z parametrami przekazanymi do niej.

public function __call($name, $arguments)
  {
   echo ‘Wywołano funckję ‘.$name.’, z argumentami ‘.implode(', ', $arguments);
  }

__callStatic()

Analogicznie do metody __*call() **do obsługi metod statycznych.

__isset()

Wywoływana jest, gdy użyjemy na polu obiektu, którego nie ma funkcji isset()

public function __isset($name)
  {
   echo ‘Wywołano isset dla pola ‘.$name;
  }

__unset()

Funkcja odpala się gdy próbujemy użyć unset() na nieistniejącej własności danego obiektu.

public function __unset($name)
{
 echo ‘Wywołano unset dla pola ‘.$name;
}

__sleep()

Funkcja **serialize() **sprawdza, czy w klasie istnieje metoda __sleep() i jeśli tak to wywołuje ją. Wykorzystywana jest gdy chcemy wybrać pola, które mają zostać zserializowane. Jako wynik tej funkcji zwracamy tablicę z nazwami pól które mają zostać zserializowane.

public function __sleep()
  {
   return array(‘name’);
  }

Jako wynik serializacji klasy zawierającej tę metodę, zostanie zwrócone tylko pole z nazwą.

__wakeup()

Analogicznie, unserialize() sprawdza, czy istnieje funkcja o magicznej nazwie __wakeup(). Jeśli tak, funkcja może rekonstruować dowolne zasoby, które obiekt może posiadać.

_toString()

Funkcja zostanie wywołana w momencie, gdy będziemy chcieli użyć naszego obiektu jako stringa.

data-enlighter-theme="eclipse">public function __toString()
  {
   return $this->name;
  }

__invoke()

Metoda zostanie odpalona, kiedy spróbujemy wywołać nasz obiekt jako funkcję.

public class Object
{
  public function __invoke()
  {
   echo ‘Wykonano metode __invoke’;
  }
}


$object = new Object();
$object();

_clone()

Metoda jest wykonywana w momencie, kiedy próbujemy sklonować obiekt za pomocą funkcji clone, możemy dzięki niej przygotować obiekt do sklonowania, którego wynikiem będzie identyczna kopia obiektu, jednak gdy chcemy stworzyć samodzielny obiekt, który ma zachować np. referencje do innych obiektów musimy ‘poprawić’ klonowanie.

class object
{
  public $object1;

  function __clone()
  {
    $this->object1 = clone $this->object1;
  }
}
Ostatnia aktualizacja:

1 września 2025

Opublikowano:

23 maja 2017

W tym artykule dowiesz się:
  1. __construct()
  2. __destruct()
  3. __get()
  4. __set()
  5. __call()
  6. __callStatic()
  7. __isset()
  8. __sleep()
  9. __wakeup()
  10. _toString()
  11. __invoke()
  12. _clone()

Polecane artykuły

PHP7

Co nowego w PHP7?

Mimo wciąż toczącej się walki, w której to przeciwnicy PHP wręcz krzywią się na mówienie o nim „język programowania”, to wciąż jeden z bardziej popularnych języków na świecie. Dlatego wydanie wersji oznaczonej numerem 7 na pewno jest dużym wydarzeniem w środowisku, a jednocześnie daje trochę argumentów zwolennikom. Istotnie, wprowdzono sporo zmian, które na pewno poprawiają […]

Czytaj więcej
11 funkcji platformy B2B

11 funkcji, które musi mieć Twoja platforma B2B z artykułami medycznymi

Czy wysyłanie armii przedstawicieli handlowych na objazdówkę po Polsce to najlepszy sposób na sprzedaż wyrobów medycznych? Oczywiście, że nie. Pokusimy się nawet o stwierdzenie, że jest to mało efektywne, nieskalowalne, a przede wszystkim drogie rozwiązanie. Jak więc możemy lepiej sprzedawać tego typu produkty? Tutaj z pomocą może przyjść Twoja własna platforma B2B z artykułami medycznymi. […]

Czytaj więcej
Agencje Prestashop w Polsce

Agencje PrestaShop w Polsce 2025

Lista jest aktualizowana na bieżąco. Agencje wdrażające PrestaShop zostały pogrupowane województwami. Dolnośląskie Satisfly – agencja e-Commerce z Wrocławia, która realizuje również wdrożenia PrestaShop. Wśród klientów znalazła się m.in. firma Laboratorium Pani Domu. Sellision – firma z Wrocławia. Dwugwiazdkowy PrestaShop Expert, w portfolio między innymi Yanto, Mondex i Toolbox. Małopolskie Just Idea – agencja marketingowa i […]

Czytaj więcej
Standardy w3c

Standardy W3C – walidacja strony internetowej

W3C czyli Word Wide Web Consortium to organizacja założona 1 października 1994 roku, która zajmuje się ustanawianiem standardów tworzenia stron WWW. Konsorcjum powstało aby powstrzymać proces niepoprawnie tworzonych stron, które źle się wyświetlały na różnych przeglądarkach. Organizacja ta zajmuje się również ocenianiem zawartości stron pod kątem przemocy i pornografii, dbaniem o prawa autorskie oraz bezpieczeństwem […]

Czytaj więcej

Skontaktuj się z nami

Opowiedz nam o swoich ambicjach związanych z e-commerce i pozwól nam wspólnie je zrealizować.

Skontaktuj się z nami