/** * @param $data * @return Segment * @throws MandatorySegmentPieceMissing * @throws UnknownSegmentException */ public function populate(&$data) { $segmentData = array_shift($data); $code = $segmentData[0]; $segment = new Segment(); $segment->setCode($code); $segment->setRawData($segmentData); if (!isset($this->segmentConfig[$code])) { return $segment; // throw new UnknownSegmentException(sprintf("Unknown segment found: %s", $code)); } $config = $this->segmentConfig[$code]; $values = $this->transformValues($config->getDataElements(), $segmentData); foreach ($values as $k => $v) { $segment->set($k, $v); } return $segment; }
/** * @return mixed */ protected function givenSegmentPopulator() { $segmentPopulator = \Phake::mock(SegmentPopulator::class); \Phake::when($segmentPopulator)->populate(\Phake::anyParameters())->thenReturnCallback(function (&$data) { $x = array_shift($data); $segment = new Segment($x[0]); $segment->setRawData($x); return $segment; }); return $segmentPopulator; }