Generator オブジェクト の使い所がイマイチわかりません。
使い所がわからないというか、もっといい使いどころがあるのではないかとの思いでの質問です。
PHP5.5 から登場した Generator ですが、皆さんはどのように利用しているでしょうか。質問は2点です。
- generator は使っていますか?
- こんなときに便利だよ、という使いどころはありますか?
今現在、携わっているプロジェクトでは、以下のような使い方をしています。
php
1<?php 2 3/** 4 * 会社モデル 5 */ 6class Company 7{ 8 /** 9 * もろもろプロパティ 10 */ 11 private $id; 12 private $name; 13 14 /** 15 * getterなど 16 */ 17 public function get****() 18 { 19 20 } 21 22 /** 23 * setterなど 24 */ 25 public function set****() 26 { 27 28 } 29 30 /** 31 * 所属のスタッフを取得する 32 * @return generator 33 */ 34 public function getStaffs() 35 { 36 $id = $this->id; 37 $objStaff = new Staff(); 38 return $objStaff->getStaffsByCompanyId($id); 39 } 40 41}
例示したものでは、「所属のスタッフを取得する」メソッド getStaffs()
は generator オブジェクトを返します。
ビューの方で、「スタッフ一覧」ページを作る場合、以下のように呼びだしできます。とはいえ、Iterator の簡易版とはいえ、rewind()
ができないなど、制約も多い…
php
1<p>会社名: <?php echo h($objCompany->getName()); ?></p> 2 3<ul> 4<?php foreach $generator as $objStaff : ?> 5 <li><?php echo h($objStaff->getName()); ?></li> 6<?php endforeach ; ?> 7</ul> 8 9// もう一度使おうとすると、エラーになる…。 10// $generator を複製しない限りは。 11<ul> 12<?php foreach $generator as $objStaff : ?> 13 <li><?php echo h($objStaff->getName()); ?></li> 14<?php endforeach ; ?> 15</ul>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/11/26 17:07