Niekiedy jest potrzeba uruchomić jakiś kod podczas tworzenia nowego egzemplarza obiektu, chociażby dlatego, aby automatycznie ustawić wartości odpowiednich zmiennych, lub np otworzyć połączenie z bazą danych.
Thank you for reading this post, don't forget to subscribe!
W obiektowym PHP służy do tego funkcja __construct(). Prześledźmy poniższy kod.
class Product{ public $poduct_id; public function __construct(){ $this->product_id=sha1('id_'.time()); } public function get_product_id(){ return $this->product_id; } } $moj_produkt = new Product(); echo "Numer twojego produktu to: ".$moj_produkt->get_product_id();
Jak widzimy klasa Product posiada jedną zmienną $product_id oraz dwie funkcje __construct() oraz get_product_id().
Zmienna $product_id – nie ma przypisanej wartości. Automatyczne generowanie wartości dla tej zmiennej następuje dopiero w trakcje tworzenia nowego obiektu (w linijce $moj_produkt = new Product();) za pośrednictwem funkcji wbudowanej w php __construct(). Natomiast dzięki zdefiniowanej przez użytkownika dowolnej funkcji ( w tym przypadku get_product_id()) zwracamy wartość zmiennej produkt na ekran (co następuje w ostatniej linijce naszego kodu).
Należy tu pamiętać aby funkcję
__construct()
zadeklarować jako publiczną, ponieważ w innym przypadku wygeneruje nam się błąd krytyczny podobny do poniższego:
Fatal error:Uncaught Error: Call to private Product::__construct() from invalid context in C:\xampp\htdocs\testy\index.php:17 Stack trace: #0 {main} thrown in C:\xampp\htdocs\testy\index.php on line 17
Oczywiście jest to bardzo prosty przykład, jednakże dzięki niemu możemy zbudować znacznie bardziej zaawansowane rozwiązania