Beispiel #1
0
 /**
  * {@inheritdoc}
  */
 public function isCoalesced()
 {
     if (count($this->_frames) == 0) {
         return false;
     }
     $last = $this->_frames->top();
     return $last->isCoalesced() && $last->isFinal();
 }
Beispiel #2
0
$list->pop();
// key()
// 获得当前节点的索引值
$list->key();
// count()
// 获得链表的数量
$list->count();
// rewind()
// 将指针返回至初始节点
$list->rewind();
// current()
// 获得当前节点
$list->current();
// top()
// 返回最后一个节点的值
$list->top();
// bottom()
// 返回第一个节点的值
$list->bottom();
// next()
// 指针移到下一个节点
$list->next();
// prev()
// 指针移到上一个节点, 如果原本指针在第一个,那么前一个节点为-1,并且将无法获得当前值
$list->prev();
// valid()
// 判断该链表是否有更多的值,返回bool
$list->valid();
// isEmpty()
// 判断该链表是否为空链表,返回bool
$list->isEmpty();
Beispiel #3
0
 /**
  * @return MethodMetaInfo
  */
 public function currentMethod()
 {
     return $this->methods->top();
 }
try {
    $dll->shift();
} catch (RuntimeException $e) {
    echo "Exception: " . $e->getMessage() . "\n";
}
// data consistency
$a = 2;
$dll->push($a);
echo $dll->pop() . "\n";
$a = 2;
$dll->unshift($a);
echo $dll->shift() . "\n";
// peakable
$dll->push(1);
$dll->push(2);
echo $dll->top() . "\n";
echo $dll->bottom() . "\n";
$dll->pop();
$dll->pop();
// countable
$dll->push(NULL);
$dll->push(NULL);
echo count($dll) . "\n";
echo $dll->count() . "\n";
var_dump($dll->pop());
var_dump($dll->pop());
// clonable
$dll->push(2);
$dll_clone = clone $dll;
$dll_clone->pop();
echo count($dll) . "\n";
<?php

$list = new SplDoublyLinkedList();
$list->push("top");
$list->top(null);
<?php

$list = new SplDoublyLinkedList();
$list->push("top");
$list->top(3.14159);
<?php

$list = new SplDoublyLinkedList();
$list->push("top");
$list->top(array());
<?php

$list = new SplDoublyLinkedList();
$list->push("top");
$list->top(45);
Beispiel #9
0
 /**
  * Notify observers, this method will store the return value from each 
  * observer in a SplDoublyLinkedList. If any one of the observers returns
  * 'false', then the notification stops with the last value of the List
  * being 'false'.
  * 
  * @param string $event
  * @param mixed $args
  * @return SplDoublyLinkedList | return values from the observers
  */
 public function notify($event, $args = null)
 {
     $args = $args instanceof \stdClass && $args->name === 'static' ? $args->args : array_slice(func_get_args(), 1);
     $list = new SplDoublyLinkedList();
     foreach ($this->getObservers($event) as $observer) {
         $list->push($this->invoke($event, $observer, $args));
         if (!$list->isEmpty() && $list->top() === false) {
             break;
         }
     }
     return $list;
 }
<?php

$dll = new SplDoublyLinkedList();
$dll->push('Never');
$dll->push('gonna');
$dll->push('give');
// at pos 0, shift everything up
$dll->add(0, 'you');
// Should be the end
$dll->add(4, 'up');
// Somewhere in the middle
$dll->add(2, 'let');
try {
    // Key 12 is unaccessible
    $dll->add(12, 'down');
} catch (OutOfRangeException $e) {
    echo $e->getMessage(), PHP_EOL;
}
foreach ($dll as $key => $val) {
    echo $key . '=>' . $val, PHP_EOL;
}
echo "count(): " . $dll->count(), PHP_EOL;
echo "top(): " . $dll->top(), PHP_EOL;
echo "bottom(): " . $dll->bottom(), PHP_EOL;
Beispiel #11
0
 /**
  * Peeks a `Token` from the end of the list.
  *
  * @return Token The last token.
  * @link http://www.php.net/manual/en/spldoublylinkedlist.top.php
  */
 public function top()
 {
     return $this->tokens->top();
 }