我想知道内存中有多少个特定类的实例。
class Test
{
public function testFunction() { return 'Test'; }
}
我创建了一些对象:
$test1 = new Test();
$test2 = new Test();
$test3 = new Test();
如何计算Test
个对象的数量?
答案 0 :(得分:3)
您可以使用类中的静态变量来实现它,您可以通过它的构造函数和析构函数继续更新。方法如下:
class MyClass {
public static $instanceCount = 0;
function __construct() {
self::$instanceCount++;
}
function __destruct() {
self::$instanceCount--;
}
}
// create 3 instances
$a = new MyClass();
$b = new MyClass();
$c = new MyClass();
echo MyClass::$instanceCount; // outputs: 3
// implicitly lose one instance (destructor is called)
$a = "test";
echo MyClass::$instanceCount; // outputs: 2
答案 1 :(得分:2)
您可以尝试get_defined_vars功能
它返回一个定义了变量的数组,然后你需要逐个循环遍历数组。要获取给定变量的类,可以使用get_class函数。
也许是这样的:
function countVars() {
$varsDefined = [];
foreach(get_defined_vars() as $v) {
$varClass = get_class($v);
if (!isset($varsDefined[$varClass])) $varsDefined[$varClass] = 0;
$varsDefined[$varClass]++;
}
return $varsDefined;
}
我无法测试代码,因此可能会出现一些错误,但我认为这个想法是存在的:)
希望它有所帮助!