class testDataFileIterator in Loft Data Grids 6.2
Same name and namespace in other branches
- 7.2 vendor/phpoffice/phpexcel/unitTests/testDataFileIterator.php \testDataFileIterator
Hierarchy
- class \testDataFileIterator implements \Iterator
Expanded class hierarchy of testDataFileIterator
File
- vendor/
phpoffice/ phpexcel/ unitTests/ testDataFileIterator.php, line 3
View source
class testDataFileIterator implements Iterator {
protected $file;
protected $key = 0;
protected $current;
public function __construct($file) {
$this->file = fopen($file, 'r');
}
public function __destruct() {
fclose($this->file);
}
public function rewind() {
rewind($this->file);
$this->current = $this
->_parseNextDataset();
$this->key = 0;
}
public function valid() {
return !feof($this->file);
}
public function key() {
return $this->key;
}
public function current() {
return $this->current;
}
public function next() {
$this->current = $this
->_parseNextDataset();
$this->key++;
}
private function _parseNextDataset() {
// Read a line of test data from the file
do {
// Only take lines that contain test data and that aren't commented out
$testDataRow = trim(fgets($this->file));
} while ($testDataRow > '' && $testDataRow[0] === '#');
// Discard any comments at the end of the line
list($testData) = explode('//', $testDataRow);
// Split data into an array of individual values and a result
$dataSet = $this
->_getcsv($testData, ',', "'");
foreach ($dataSet as &$dataValue) {
$dataValue = $this
->_parseDataValue($dataValue);
}
unset($dataValue);
return $dataSet;
}
private function _getcsv($input, $delimiter, $enclosure) {
if (function_exists('str_getcsv')) {
return str_getcsv($input, $delimiter, $enclosure);
}
$temp = fopen('php://memory', 'rw');
fwrite($temp, $input);
rewind($temp);
$data = fgetcsv($temp, strlen($input), $delimiter, $enclosure);
fclose($temp);
if ($data === false) {
$data = array(
null,
);
}
return $data;
}
private function _parseDataValue($dataValue) {
// discard any white space
$dataValue = trim($dataValue);
// test for the required datatype and convert accordingly
if (!is_numeric($dataValue)) {
if ($dataValue == '') {
$dataValue = NULL;
}
elseif ($dataValue == '""') {
$dataValue = '';
}
elseif ($dataValue[0] == '"' && $dataValue[strlen($dataValue) - 1] == '"') {
$dataValue = substr($dataValue, 1, -1);
}
elseif ($dataValue[0] == '{' && $dataValue[strlen($dataValue) - 1] == '}') {
$dataValue = explode(';', substr($dataValue, 1, -1));
foreach ($dataValue as &$dataRow) {
if (strpos($dataRow, '|') !== FALSE) {
$dataRow = explode('|', $dataRow);
foreach ($dataRow as &$dataCell) {
$dataCell = $this
->_parseDataValue($dataCell);
}
unset($dataCell);
}
else {
$dataRow = $this
->_parseDataValue($dataRow);
}
}
unset($dataRow);
}
else {
switch (strtoupper($dataValue)) {
case 'NULL':
$dataValue = NULL;
break;
case 'TRUE':
$dataValue = TRUE;
break;
case 'FALSE':
$dataValue = FALSE;
break;
}
}
}
else {
if (strpos($dataValue, '.') !== FALSE) {
$dataValue = (double) $dataValue;
}
else {
$dataValue = (int) $dataValue;
}
}
return $dataValue;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
testDataFileIterator:: |
protected | property | ||
testDataFileIterator:: |
protected | property | ||
testDataFileIterator:: |
protected | property | ||
testDataFileIterator:: |
public | function | ||
testDataFileIterator:: |
public | function | ||
testDataFileIterator:: |
public | function | ||
testDataFileIterator:: |
public | function | ||
testDataFileIterator:: |
public | function | ||
testDataFileIterator:: |
private | function | ||
testDataFileIterator:: |
private | function | ||
testDataFileIterator:: |
private | function | ||
testDataFileIterator:: |
public | function | ||
testDataFileIterator:: |
public | function |