/** * @param string $filePath * * @return array|Student[] */ public function read($filePath) { $students = []; $objPHPExcel = \PHPExcel_IOFactory::load($filePath); /** @var \PHPExcel_Worksheet $worksheet */ foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { /** @var \PHPExcel_Worksheet_Row $row */ foreach ($worksheet->getRowIterator() as $row) { if (1 === $row->getRowIndex()) { continue; } $data = []; /** @var \PHPExcel_Cell $cell */ foreach ($row->getCellIterator('A', 'D') as $cell) { switch ($cell->getColumn()) { case 'A': $data['grade'] = (int) $cell->getValue(); break; case 'B': $data['full_name'] = $cell->getValue(); break; case 'C': $data['school'] = $cell->getValue(); break; case 'D': $data['score'] = floatval($cell->getValue()); break; } } $students[] = StudentFactory::createFromArray($data); } } return $students; }
public function testCreateFromArray() { $data = ['full_name' => 'Test full name', 'school' => 'Test school', 'grade' => 9, 'score' => 1]; $student = StudentFactory::createFromArray($data); $this->assertEquals($data['full_name'], $student->getFullName()); $this->assertEquals($data['school'], $student->getSchool()); $this->assertEquals($data['grade'], $student->getGrade()); $this->assertEquals($data['score'], $student->getScore()); }