В качестве совета оба singleton и global действительны и могут быть объединены в одной системе, проекте, плагине, продукте и т. Д. ...
В моем случае я делаю цифровые продукты для веб (плагин).
Я использую только синглтон в основном классе и использую его по принципу. Я почти не использую его, потому что я знаю, что основной класс не будет создавать его снова
<?php // file0.php
final class Main_Class
{
private static $instance;
private $time;
private final function __construct()
{
$this->time = 0;
}
public final static function getInstance() : self
{
if (self::$instance instanceof self) {
return self::$instance;
}
return self::$instance = new self();
}
public final function __clone()
{
throw new LogicException("Cloning timer is prohibited");
}
public final function __sleep()
{
throw new LogicException("Serializing timer is prohibited");
}
public final function __wakeup()
{
throw new LogicException("UnSerializing timer is prohibited");
}
}
Global используется практически для всех средних классов, например:
<?php // file1.php
global $YUZO;
$YUZO = new YUZO; // YUZO is name class
в то время как во время выполнения я могу использовать Global для вызова их методов и атрибутов в одном и том же экземпляре, поскольку мне не нужен другой экземпляр моего основного класса продуктов.
<?php // file2.php
global $YUZO;
$YUZO->method1()->run();
$YUZO->method2( 'parameter' )->html()->print();
Я понял, что с глобальным я должен использовать один и тот же экземпляр, чтобы иметь возможность заставить продукт работать, потому что мне не нужна фабрика для экземпляров того же класса, обычно фабрика экземпляров предназначена для больших систем или для очень редких целей.
In conclusion:
, вы должны, если вы уже хорошо понимаете, что такое анти-паттерн Singleton и понимать Global , вы можете использовать один из 2 вариантов или смешать их, но если я рекомендую не злоупотреблять, так как есть много программистов, которые очень исключительны и верны программированию ООП, используйте его для основных и дополнительных классов, которые вы часто используете во время выполнения. (Это экономит вам много ресурсов процессора). ?