Although `offsetSet` is supposed to be an alias to `attach`, real-world results do not indicate that. When extending the SplObjectStorage class, it's expected that a modification to `attach` would also affect `offsetSet`. However, it seems they need to both be extended. Consider the results below...
<?php
declare(strict_types=1);
class CustomSplObjectStorage extends SplObjectStorage
{
public function offsetSet(mixed $object, mixed $info = null): void
{
print("offsetSet called\n");
parent::offsetSet($object, $info);
}
public function attach(mixed $object, mixed $info = null): void
{
print("attach called\n");
parent::attach($object, $info);
}
}
$a = new CustomSplObjectStorage();
$a[new stdClass()] = 'ok';
$a->attach(new stdClass(), 'ok');
?>
This prints:
```
offsetSet called
attach called
```
While we would expect...
```
offsetSet called
attach called
attach called
```
... if `offsetSet` was a true alias of `attach`. I'm not sure if this is intentional or not.