Zend\Stdlib\ArrayStackは、ArrayObjectをスタックとして扱えるようになるクラスです。
中身はArrayObjectをextendsしており、変更されているメソッドはただひとつgetIterator()だけです。
出力はこんな。
FIFOのキューがFILOのスタックになり、出力が逆になりました。
はい、これだけのクラスです。
ちなみに、extendsしているArrayObjectはPHPコアの\ArrayObjectであり、Zend\Stdlib\ArrayObjectではありません。
せっかく自前で実装したZend\Stdlib\ArrayObjectを使用していないのは何故なのでしょうかね。
中身はArrayObjectをextendsしており、変更されているメソッドはただひとつgetIterator()だけです。
<?php
header('Content-type: text/html; charset=UTF-8');
require_once('path/to/channel/vendor/autoload.php');
use Zend\Stdlib\ArrayStack;
$arrayStack = new ArrayStack();
$arrayObject = new \ArrayObject();
for($i=0;$i<5;$i++){
$arrayStack->append('val:' . $i);
$arrayObject->append('val:' . $i);
}
// ArrayObject
print('ArrayObject');
foreach($arrayObject as $key=>$val){
print('key:' . $key . ' val:' . $val);
}
// ArrayStack
print('ArrayStack');
foreach($arrayStack as $key=>$val){
print('key:' . $key . ' val:' . $val);
}
出力はこんな。
ArrayObject key:0 val:val:0 key:1 val:val:1 key:2 val:val:2 key:3 val:val:3 key:4 val:val:4 ArrayStack key:0 val:val:4 key:1 val:val:3 key:2 val:val:2 key:3 val:val:1 key:4 val:val:0
FIFOのキューがFILOのスタックになり、出力が逆になりました。
はい、これだけのクラスです。
ちなみに、extendsしているArrayObjectはPHPコアの\ArrayObjectであり、Zend\Stdlib\ArrayObjectではありません。
せっかく自前で実装したZend\Stdlib\ArrayObjectを使用していないのは何故なのでしょうかね。
PR