Ik probeer een functie te schrijven die kijkt of een gegeven directory leeg is en zo ja, deze directory verwijderd en true returned. Als er nog bestanden (of andere directories) in de dir zitten, dan moet de functie false returnen. Ik heb nu dit:
In principe werkt de functie wel, maar ik vraag me af of hij wel goed in elkaar zit. Immers: als er bestanden in de dir zitten, returned de functie false en stopt dan (regel 14). De geopende directory wordt dan volgens mij niet correct weer gesloten. Dat gebeurt pas in regel 18. Ik ben voor het eerst serieus met de filesystem functies van php bezig, en begrijp de werking nog niet helemaal. Ik hoop dat iemand mij kan vertellen of deze functie zo klopt, en zo niet - hoe ik deze kan verbeteren
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| /** * Remove a directory only when it is empty * * @param $dir The directoty the users wants to delete */ function rm_dir($dir) { $handle = opendir($dir); while (false !== ($file = readdir($handle))) { if (!in_array($file, array('.', '..'))) { if (is_dir($dir.'/'.$file)) { rm_dir($dir.'/'.$file); } else { return false; } } } closedir($handle); @rmdir($dir); return true; } |
In principe werkt de functie wel, maar ik vraag me af of hij wel goed in elkaar zit. Immers: als er bestanden in de dir zitten, returned de functie false en stopt dan (regel 14). De geopende directory wordt dan volgens mij niet correct weer gesloten. Dat gebeurt pas in regel 18. Ik ben voor het eerst serieus met de filesystem functies van php bezig, en begrijp de werking nog niet helemaal. Ik hoop dat iemand mij kan vertellen of deze functie zo klopt, en zo niet - hoe ik deze kan verbeteren
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."