Het is alweer een tijd geleden dat ik wat met php aan het knutselen was, maar ik wilde even iets uitproberen. Ik wilde voor mijzelf even php een map recursief laten scannen en alle avi files listen. Dus ik knutselde dit in elkaar, easy peasy, bijzonder eenvoudig:
Nu is de grap als volgt. Ik had het eerst gewoon gedaan met normale DirectoryIterator, dat was geen probleem, voor 1 directory uiteraard. (Dus het probleem zit hem bijvoorbeeld niet in de foreach, al is dat wellicht wat bijzondere constructie, had ik van php.net voorbeeld overgenomen (zoals ik zei, "lang" geleden
) ). Echter, als we dit scriptje uitvoeren krijgen we dit:
Dus dan kijk je al wat raar op, want isDot() werkte zonet nog wel.... Zie je op php.net dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| <?php $allowed = array("avi","mkv",); // $info->isDot() werkt dus niet // aangezien RecursiveDirectoryIterator de method isDot -->inherits<-- // Hoe extern aan te spreken? if($_SERVER['REQUEST_METHOD'] == "POST"){ foreach(new RecursiveDirectoryIterator($_POST['path']) as $info){ if(!$info->isDot() && in_array(substr($info->getFilename(),-3),$allowed)){ echo $info->getFilename().'<br />'; } } } else{ echo 'Vul hier het volledige pad in naar de map die gescand moet worden: <br /><form method="post" action="'.$_SERVER['PHP_SELF'].'"> <input type="text" name="path"> <input type="submit" value="verzenden" name="verzonden"><input type="reset" value="herstel" name="reset"> </form>'; } ?> |
Nu is de grap als volgt. Ik had het eerst gewoon gedaan met normale DirectoryIterator, dat was geen probleem, voor 1 directory uiteraard. (Dus het probleem zit hem bijvoorbeeld niet in de foreach, al is dat wellicht wat bijzondere constructie, had ik van php.net voorbeeld overgenomen (zoals ik zei, "lang" geleden
code:
1
| Fatal error: Call to undefined method SplFileInfo::isDot() in xxx\dir.php on line 11 |
Dus dan kijk je al wat raar op, want isDot() werkte zonet nog wel.... Zie je op php.net dit:
Geweldig, hij inherets dus hier, in plaats van bij normale directoryiterator dat hij 'm zelf heeft.... Hoe krijg ik het nou buiten de class om oor elkaar die method aan te roepen?...
/* Inherits */
.....
public bool DirectoryIterator::isDot ( void )
....
IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB