PHP 访问 SplDoublyLinkedList 交叉函数

PHP accessing an SplDoublyLinkedList cross function

我和 php 一起工作,我 运行 陷入了困境。我需要我的双向链表可以跨函数访问。为了解决这个问题,我一直在做的是在参数中显式传递变量的地址。这种方法是有效的解决方案吗?它看起来类似于:

function foo(&$list){
    $list->push('a');
    $list->push('b');
    $list->push('c');
    $list->push('d');

    $list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
    for ($list->rewind(); $list->valid(); $list->next()) {
        echo $list->current()."\n";
    }
}

此外,附带说明一下,我是否可以通过简单地执行以下操作将对象存储在链表中?

function foo(&$list){
    //assuming Pie is a class with a method get_pie_flavor()
    $myBar = new Pie('cherry');
    $list->push($myBar);

    $list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
    for ($list->rewind(); $list->valid(); $list->next()) {
        echo $list->current()->get_pie_flavor();
    //will this print 'cherry' assuming get_pie_flavor is written correctly?
  }
}

旁注:是的,你完全可以做到。此外,假设列表已正确初始化,按引用传递的工作方式与上面描述的完全相同。