是否可以检查并查看某个对象是否已使用php实例化?我有一个mysql类,其他页面实例化以使用其方法,我所做的是创建一个记录所有查询的日志。我注意到mysql一次打开3-4次而不是一次。所以我需要验证对象是否被实例化,如果不是,它不会创建另一个并打开另一个无用的连接。
答案 0 :(得分:6)
听起来像是Singleton模式的完美案例。
class Connection
{
/**
* @var Connection
*/
private static $instance;
private static $config = array();
private function __construct()
{
// whatever you need in here, just keep the method private
}
public function __clone()
{
throw new RuntimeException;
}
public function __wakeup()
{
throw new RuntimeException;
}
public static setConfig(array $config)
{
self::$config = $config;
}
public static function getInstance()
{
if (null === self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
}
答案 1 :(得分:5)
您正在寻找singleton
答案 2 :(得分:3)
您可以使用 instanceof 运算符来检查给定变量是否属于特定类:
if ($db instanceof DatabaseClass) :
在此处详细了解:http://php.net/instanceof
答案 3 :(得分:2)
简单地使用is_object
,因为类没有类型但只有内存分配,因此在使用新实例化对象时,在类名上使用is_object
将只返回一个字符串关键字和对象是在内存中创建的,并且具有目标类型。
测试用例:
class HelloWorld{}
$a = is_object(HelloWorld);
$b = is_object(new HelloWorld);
var_dump($a, $b);
结果:
布尔(假)布尔(真)