Ik ben momenteel bezig om m'n VirtualFileSystem classje een beetje om te zetten naar OO PHP5 met nette inheritance enzo.
Ik heb m'n code flink wat gestript, en het meest nuttige hieronder neergezet. De code hieronder bestaat uit een VirtualFileSystem object (de root van een directory tree) en een vfsDir object (child van de VirtualFileSystem of van zichzelf bij subdirectories)
Dankzij de mooie __construct leest een VirtualFileSystem in 1x een complete directory structuur in naar een een objectenboom, en kunnen uit de database extra children toegevoegd worden, precies zoals ik het bedoeld had.
Nu komt het probleem: ik wil vanuit *een* (maakt niet uit welke) vsfDirectory object weer terug naar het VirtualFileSystem object referencen. Iets waarvan ik dácht dat het zou moeten kunnen met VirtualFileSystem::getRootDir() (aangezien vfsDirectory ge-extend wordt vanaf VirtualFileSystem, maar die returned... *niets*
Is er hier een expert die me een inzicht kan geven in wat ik fout doe?
uiteindelijk wordt het hele zwikje dan zo opgestart:
Ik heb m'n code flink wat gestript, en het meest nuttige hieronder neergezet. De code hieronder bestaat uit een VirtualFileSystem object (de root van een directory tree) en een vfsDir object (child van de VirtualFileSystem of van zichzelf bij subdirectories)
Dankzij de mooie __construct leest een VirtualFileSystem in 1x een complete directory structuur in naar een een objectenboom, en kunnen uit de database extra children toegevoegd worden, precies zoals ik het bedoeld had.
Nu komt het probleem: ik wil vanuit *een* (maakt niet uit welke) vsfDirectory object weer terug naar het VirtualFileSystem object referencen. Iets waarvan ik dácht dat het zou moeten kunnen met VirtualFileSystem::getRootDir() (aangezien vfsDirectory ge-extend wordt vanaf VirtualFileSystem, maar die returned... *niets*
Is er hier een expert die me een inzicht kan geven in wat ik fout doe?
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| class VirtualFileSystem { public $rootDir, $rootDirectory; function __construct($startdir) { $this->rootDir = $startdir; $this->rootDirectory = new vfsDirectory($startdir); } function getRootDir() { return ($this->rootDir); } } class vfsDirectory extends VirtualFileSystem { /* hier wat vars enzow */ function __construct($dirname, $level=0, $directory = '') { $this->parentDir = substr($dirname, 0, strrpos($dirname, '/') +1); $this->directory = substr($dirname, strrpos($dirname, '/')+1) ; $this->level = $level; if ($level == 0) { $this->relativeDir = '/'; } else { throw_error(VirtualFileSystem::getRootDir(); // hier gaat het dus de mist in. Ik wil vanaf hier naar VirtualFileSystem::getRootDir() terug... } $this->walk($this->getCurrentDir()); } function walk($dirname) { global $db; $dirContent = scandir($dirname); $dbcontent = $db->fetchAll("select * from VirtualFileSystem where strSrcDir = '{$dirname}'"); for ($i=0; $i<sizeof($dirContent); $i++) { if ($dirContent[$i] != '.' && $dirContent[$i] != '..') { if (is_dir($this->getCurrentDir().'/'.$dirContent[$i])) { $this->subDirs[] = new vfsDirectory($this->getCurrentDir().'/'.$dirContent[$i], $this->level +1); // Recursief tree inlezen } if (is_file($this->getCurrentDir().'/'.$dirContent[$i])) { $this->files[] = new vfsFile($this->getCurrentDir().'/'.$dirContent[$i], $this); // bestanden ook inlezen } } } for ($i=0; $i<sizeof($dbcontent); $i++) { $this->subDirs[] = new vfsSymlink($this, $dbcontent[$i]['strDestName'], $dbcontent[$i]['strDestURI'], $this->level + 1); // dit is het 'virtual' part... } } } |
uiteindelijk wordt het hele zwikje dan zo opgestart:
PHP:
1
| $filesystem = new VirtualFileSystem($_TPL['basedir']); |
[ Voor 8% gewijzigd door SchizoDuckie op 16-11-2004 10:35 ]