SplObjectStorage::offsetSet

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SplObjectStorage::offsetSet将数据关联到存储中的对象

描述

public SplObjectStorage::offsetSet(object $object, mixed $info = null): void

将数据关联到存储中的 object

注意:

SplObjectStorage::offsetSet()SplObjectStorage::attach() 的别名。

参数

object

要将数据关联到的 object

info

要与 object 关联的数据。

返回值

不返回值。

示例

示例 #1 SplObjectStorage::offsetSet() 示例

<?php
$s
= new SplObjectStorage;

$o1 = new stdClass;

$s->offsetSet($o1, "hello"); // 相当于 $s[$o1] = "hello";

var_dump($s[$o1]);
?>

上面的例子将输出类似以下内容

string(5) "hello"

参见

添加说明

用户贡献说明 1 说明

aderh
1 年前
虽然 `offsetSet` 应该与 `attach` 别名,但实际结果并不表明这一点。扩展 SplObjectStorage 类时,预计对 `attach` 的修改也会影响 `offsetSet`。但是,似乎它们都需要扩展。请考虑以下结果...

<?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');
?>

这将打印
```
offsetSet called
attach called
```

虽然我们预期...

```
offsetSet called
attach called
attach called
```

... 如果 `offsetSet` 是 `attach` 的真正别名。我不确定这是故意的还是意外。
To Top