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