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