[PHP] Automatyczne uruchomienie kodu podczas tworzenia obiektu

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).

Ostrzeżenie!
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