A note on top() and bottom():
Picture the doubly-linked list (or queue) in the same way that you would a stack.
Say you started with an empty queue, and added five values:
$myList = new SplDoublyLinkedList
$mylist->push(1)
$mylist->push(2)
$mylist->push(3)
$mylist->push(4)
$mylist->push(5)
$mylist->top()
-> 5
$mylist->bottom()
-> 1