Php 如何限制单例类的克隆?

Php 如何限制单例类的克隆?,php,Php,我知道如何用php创建单例类。但我感到困惑的是,如果我们能够克隆这一类,那么这就是对这一类的浪费 我可以知道如何限制singleton类的克隆吗?请检查以下代码: class DatabaseConnection { private static $singleton_instance = null; private function construct__() { // Declaring the constructor as private ensures // that

我知道如何用php创建单例类。但我感到困惑的是,如果我们能够克隆这一类,那么这就是对这一类的浪费

我可以知道如何限制singleton类的克隆吗?请检查以下代码:

class DatabaseConnection {

private static $singleton_instance = null;

private function construct__() {
    // Declaring the constructor as private ensures
    // that this object is not created as a new intance
    // outside of this class.  Therefore you must use the
    // global_instance function to create this object.
}

public static function global_instance() {
    static $singleton_instance = null;
    if($singleton_instance === null) {
        $singleton_instance = new DatabaseConnection();
    }

    return($singleton_instance);
}
}
有一个
\u clone()
方法可以帮助您防止克隆

public function __clone()
{
    trigger_error('Cloning forbidden.', E_USER_ERROR);
}

只需将函数uu clone()设置为私有


如果您试图访问它,它将抛出一个致命错误。

实际上,在克隆对象之后,只有该方法被调用,对吗?是的。你也可以实现唤醒。这将阻止序列化。我们不能在创建对象之前触发吗?
private function __clone() { }