- Output for 8.1.8 - 8.1.28, 8.2.10 - 8.2.18, 8.3.0 - 8.3.6
- ...
<?php
interface MultitonInterface {
public static function getInstance(string $key);
}
trait MultitonTrait
{
private static array $instance = [];
public static function getInstance(string $key): self
{
if (!array_key_exists($key, self::$instance)) {
self::$instance[$key] = new self;
}
return self::$instance[$key];
}
}
class Database implements MultitonInterface
{
use MultitonTrait;
private function __construct(){}
private function __clone(){}
public function __wakeup(){}
public function connect()
{
echo "...";
}
}
$db = Database::getInstance('mysql');
$db->connect();