Wzorce projektowe (design patterns)
Założenie: Przedstawimy podstawowe koncepcje wzorców projektowych w PHP, skupiając się na przykładach Singleton i Factory.
Krok po kroku:
- Singleton: Wzorzec Singleton zapewnia, że dana klasa będzie miała tylko jedną instancję.
class Singleton { private static $instance; private function __construct() {} public static function getInstance() { if (!isset(self::$instance)) { self::$instance = new self(); } return self::$instance; } public function doSomething() { echo "Robię coś!"; } } $singleton1 = Singleton::getInstance(); $singleton2 = Singleton::getInstance(); var_dump($singleton1 === $singleton2); // true - obie zmienne wskazują na ten sam obiekt $singleton1->doSomething();
Wyjaśnienie: Klasa `Singleton` posiada prywatny konstruktor, uniemożliwiając tworzenie instancji poza metodą `getInstance()`. Metoda ta zwraca zawsze ten sam obiekt.
- Factory: Wzorzec Factory ułatwia tworzenie obiektów bez konieczności jawnego określania ich klasy.
interface Shape { public function draw(); } class Circle implements Shape { public function draw() { echo "Rysuję koło
"; } } class Square implements Shape { public function draw() { echo "Rysuję kwadrat
"; } } class ShapeFactory { public static function createShape(string $shapeType): Shape { switch ($shapeType) { case 'circle': return new Circle(); case 'square': return new Square(); default: throw new Exception("Nieznany typ figury"); } } } $circle = ShapeFactory::createShape('circle'); $square = ShapeFactory::createShape('square'); $circle->draw(); $square->draw();Wyjaśnienie: Klasa `ShapeFactory` tworzy obiekty różnych klas implementujących interfejs `Shape` w zależności od przekazanego parametru.
Ten przykład prezentuje podstawowe wzorce projektowe. Zachęcamy do dalszego zgłębiania tematu i poznawania innych wzorców!