Документация PHP не очень явная и только утверждает, что:
SplObjectStorage:: offsetExists Проверяет, существует ли объект в хранилище. (PHP >= 5.3.0)
SplObjectStorage:: contains Проверяет, содержит ли хранилище данный объект. (PHP >= 5.1.0)
Который в значительной степени кажется мне одинаковым.
ВОПРОС: Помимо смещения Exists, доступного только в 5.3.0, в чем разница между 2?
небольшое испытание, которое я провел...
$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));
выход:
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