00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00016 final class ProjectionChain implements ObjectProjection
00017 {
00018 private $list = array();
00019
00023 public function add(ObjectProjection $projection, $name = null)
00024 {
00025 if ($name) {
00026 Assert::isFalse(isset($this->list[$name]));
00027
00028 $this->list[$name] = $projection;
00029 } else {
00030 $this->list[] = $projection;
00031 }
00032
00033 return $this;
00034 }
00035
00039 public function process(Criteria $criteria, JoinCapableQuery $query)
00040 {
00041 foreach ($this->list as $projection)
00042 $projection->process($criteria, $query);
00043
00044 return $query;
00045 }
00046 }
00047 ?>