class myClass { private static $instance; private function __construct() { } private function __desconstruct() { } public function __clone() { trigger_error("Can\'t clone singleton.", E_USER_ERROR); } public function Instance() { if (!isset(self::$instance)) { self::$instance = new self; } return self::$instance; } } $obj = myClass::Instance(); //<<-- triggers __clone() for some reason.