|
20 | 20 | */
|
21 | 21 | class SplCaster
|
22 | 22 | {
|
| 23 | + private static $splFileObjectFlags = array( |
| 24 | + \SplFileObject::DROP_NEW_LINE => 'DROP_NEW_LINE', |
| 25 | + \SplFileObject::READ_AHEAD => 'READ_AHEAD', |
| 26 | + \SplFileObject::SKIP_EMPTY => 'SKIP_EMPTY', |
| 27 | + \SplFileObject::READ_CSV => 'READ_CSV', |
| 28 | + ); |
| 29 | + |
23 | 30 | public static function castArrayObject(\ArrayObject $c, array $a, Stub $stub, $isNested)
|
24 | 31 | {
|
25 | 32 | $prefix = Caster::PREFIX_VIRTUAL;
|
@@ -104,6 +111,39 @@ public static function castSplFileInfo(\SplFileInfo $c, array $a, Stub $stub, $i
|
104 | 111 | );
|
105 | 112 | }
|
106 | 113 |
|
| 114 | + public static function castSplFileObject(\SplFileObject $c, array $a, Stub $stub, $isNested) |
| 115 | + { |
| 116 | + $prefix = Caster::PREFIX_VIRTUAL; |
| 117 | + |
| 118 | + $flags = $c->getFlags(); |
| 119 | + $flagsArray = array(); |
| 120 | + foreach (self::$splFileObjectFlags as $value => $name) { |
| 121 | + if ($flags & $value) { |
| 122 | + $flagsArray[] = $name; |
| 123 | + } |
| 124 | + } |
| 125 | + |
| 126 | + $fstat = $c->fstat(); |
| 127 | + $fstat = array( |
| 128 | + 'dev' => $fstat['dev'], |
| 129 | + 'ino' => $fstat['ino'], |
| 130 | + 'nlink' => $fstat['nlink'], |
| 131 | + 'rdev' => $fstat['rdev'], |
| 132 | + 'blksize' => $fstat['blksize'], |
| 133 | + 'blocks' => $fstat['blocks'], |
| 134 | + '…' => '…'.(count($fstat) - 6), |
| 135 | + ); |
| 136 | + |
| 137 | + return $a + array( |
| 138 | + $prefix.'csvControl' => $c->getCsvControl(), |
| 139 | + $prefix.'flags' => new ConstStub(implode('|', $flagsArray), $flags), |
| 140 | + $prefix.'maxLineLen' => $c->getMaxLineLen(), |
| 141 | + $prefix.'fstat' => $fstat, |
| 142 | + $prefix.'eof' => $c->eof(), |
| 143 | + $prefix.'key' => $c->key(), |
| 144 | + ); |
| 145 | + } |
| 146 | + |
107 | 147 | public static function castFixedArray(\SplFixedArray $c, array $a, Stub $stub, $isNested)
|
108 | 148 | {
|
109 | 149 | $a += array(
|
|
0 commit comments