В чем разница между SplObjectStorage ::contains и SplObjectStorage ::offsetExists?

Документация по PHP не очень точна и утверждает только, что:

SplObjectStorage ::offsetExistsПроверяет, существует ли объект в хранилище.(PHP >= 5.3.0)

SplObjectStorage ::содержитПроверяет, содержит ли хранилище предоставленный объект.(PHP >= 5.1.0)

Что мне кажется почти одно и то же.

ВОПРОС:Помимо того, что offsetExists доступен только в 5.3.0, в чем разница между ними?


небольшой тест, который я провел...

$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
12
задан Leigh 10 January 2013 в 13:41
поделиться