Ben StackOverflow bir süre önce öğrenmek ettik we can get the "instance ID" of any resource, örneğin:
var_dump(intval(curl_init())); // int(2)
var_dump(intval(finfo_open())); // int(3)
var_dump(intval(curl_init())); // int(4)
var_dump(intval(finfo_open())); // int(5)
var_dump(intval(curl_init())); // int(6)
Ben sınıflarına benzer ancak uygulanan bir şey gerekir:
class foo {
public function __construct() {
ob_start();
var_dump($this); // object(foo)#INSTANCE_ID (0) { }
echo preg_replace('~.+#(\d+).+~s', '$1', ob_get_clean());
}
}
$foo = new foo(); // 1
$foo2 = new foo(); // 2
Yukarıdaki çalışıyor ama ben, en azından çıkış tamponları dahil etmedi birini daha hızlı bir çözüm için umut oldu ya da. Bu mutlaka yapıcısı içinde hatta sınıfın kendisi içinde kullanılan olmayacağını unutmayın!
spl_object_hash()
I identical sağlamalarının iki nesne üretmek için arıyorum ne değildir:
var_dump(spl_object_hash($foo)); // 000000005111e639000000003a87b42e
var_dump(spl_object_hash($foo2)); // 000000005111e639000000003a87b42e
Kaynakları gibi int Döküm nesneleri ile çalışmak için görünmüyor:
Class foo Notice: Nesne int dönüştürülür olamazdı.
Is there a quick way to grab the same output without using object properties?
Ayrıca var_dump()
, I debug_zval_dump()
a> da, nesne örneğini verir bunun sonucu dönmek olmadığından ne yazık ki o da çıktı tamponlama ihtiyacı olduğunu deneme yanılma yoluyla keşfettik.
To the down voters: Bu temel bir sorudur düşünüyorsanız, bir çözüm önermek, nedenleri açıklamak ya.