4

快一个;我怀疑这是可能的,但是有没有办法利用array($key => $value);PHP 的语法来处理SplObjectStorage对象?

我的意思是,有没有这样的方法可以实现:

$store = // ?
    new KeyObject() => new ValueObject(),
    new KeyObject() => new ValueObject(),
    // ...

在初始化对象存储的上下文中?截至目前,我只是在使用:(并且可能会继续,考虑到这种可能性的绝对可能性

$store = new SplObjectStorage();
$store[new KeyObject()] = new ValueObject();
$store[new KeyObject()] = new ValueObject();
// ...

会很好,高度怀疑它,但也许有人知道得更好。

4

2 回答 2

3

虽然这将是一种更简洁的语法,但不幸的是这是不可能的。您可以做的最好的事情是:

$store[new KeyObject()] = new ValueObject();

或者

$store->append( new KeyObject(), new ValueObject());

将对象添加到SplObjectStorage.

于 2011-11-29T06:38:59.443 回答
2

为什么不这样做:

$store = new SplObjectStorage();

$data = array(
    array(new KeyObject, new ValueObject),
    array(new KeyObject, new ValueObject),
    array(new KeyObject, new ValueObject),
);

foreach($data as $item) {
    list($key, $value) = $item;
    $store->attach($key, $value);
}

它不漂亮,但至少简洁。

于 2011-11-29T06:36:58.197 回答