<?php
class SingleInstance
{
private static $instances = [];
public static function load($class, $args = null)
{
if ($args) {
$args = implode(', ', $args);
}
$checksum = md5($class.$args);
if (array_key_exists($checksum, self::$instances)) {
echo "Hit!";
return self::$instances[$checksum];
}
self::$instances[$checksum] = new $class($args);
return self::$instances[$checksum];
}
}
class Words
{
private $word;
public function __construct($word) {
$this->word = $word;
}
public function show() {
return $this->word;
}
}
$a = SingleInstance::load('Words', ['Dog']);
echo $a->show().PHP_EOL;
$b = SingleInstance::load('Words', ['Cat']);
echo $b->show().PHP_EOL;
$c = SingleInstance::load('Words', ['Cat']);
echo $c->show().PHP_EOL;
- Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
- Dog
Cat
Hit!Cat
preferences:
185.89 ms | 403 KiB | 199 Q