PHP
Pattern: Singleton/Multiton
12.07.2021
28

Pattern: Singleton/Multiton

class Singleton
{
    private $config = [];
    private static $instance = null;

    private function __construct()
    {
        $this->config = [
            'rnd' => rand(),
        ];
    }

    private function __clone()
    {
    }

    private function __wakeup()
    {
    }

    public static function getInstance(): self
    {
        if (is_null(self::$instance)) {
            self::$instance = new self;
        }

        return self::$instance;
    }

    public function getConfig(): array
    {
        return $this->config;
    }
}

$a = Singleton::getInstance();
$b = Singleton::getInstance();
var_dump($a->getConfig());
var_dump($b->getConfig());



class Multiton
{
    private $config = [];
    private static $instance = [];

    private function __construct()
    {
        $this->config = [
            'rnd' => rand(),
        ];
    }

    private function __clone()
    {
    }

    private function __wakeup()
    {
    }

    public static function getInstance(string $name): self
    {
        if (!array_key_exists($name, self::$instance)) {
            self::$instance[$name] = new self;
        }

        return self::$instance[$name];
    }

    public function getConfig(): array
    {
        return $this->config;
    }
}

$a = Multiton::getInstance('First');
$b = Multiton::getInstance('Second');
var_dump($a->getConfig());
var_dump($b->getConfig());
Источник: ZetRider
PHP
Pattern: State
16.07.2021
9
Pattern: State

abstract class StateVehicle { protected $vehicle; public function __construct(Vehicle $vehicle) { $this->vehicle = $vehicle;...

Читать →
PHP
Pattern: Adapter
12.07.2021
15
Pattern: Adapter

interface ResponseInterface { public function getData(): array; } class Response implements ResponseInterface { private $data; public fu...

Читать →
PHP
Как вставить Gist через визуальный редактор
25.01.2021
461
Как вставить Gist через визуальный редактор

Большинство визуальных редакторов запрещают вставку тега <script> в целях безопасности.При помощи простого регулярного выражения можно заменить...

Читать →