Die PHP-Dokumentation ist nicht sehr explizit und besagt nur, dass:Was ist der Unterschied zwischen SplObjectStorage :: contains und SplObjectStorage :: offsetExists?
SplObjectStorage :: offsetExistsüberprüft, ob ein Objekt im Speicher vorhanden ist. (PHP> = 5.3.0)
SplObjectStorage :: enthältPrüft, ob die Speicher enthält das Objekt vorgesehen. (PHP> = 5.1.0)
Das scheint mir ziemlich das Gleiche zu sein.
FRAGE: Abgesehen von OffsetExists nur in 5.3.0 verfügbar ist, was ist der Unterschied zwischen den 2?
kleiner Test I durchgeführt ...
$s = new SplObjectStorage();
$o1 = new StdClass();
$o2 = new StdClass();
$o3 = "I'm not an object!";
$s->attach($o1);
var_dump($s->contains($o1));
var_dump($s->offsetExists($o1));
echo '<br>';
var_dump($s->contains($o2));
var_dump($s->offsetExists($o2));
echo '<br>';
var_dump($s->contains($o3));
var_dump($s->offsetExists($o3));
Ausgang:
boolean true
boolean true
boolean false
boolean false
Warning: SplObjectStorage::contains() expects parameter 1 to be object, string given in index.php on line 15
null
Warning: SplObjectStorage::offsetExists() expects parameter 1 to be object, string given in index.php on line 16
null
Dank für das Tauchen in die Quelle. – PeeHaa
Großartig, vielen Dank! – Tivie