這取決於你想要完成什麼。
如果你想在文件和它們所在的目錄之間有一個可配置的映射,你需要制定一個路徑抽象並實現一些加載函數來處理它。我會做一個例子。
假設我們將使用諸如Core.Controls.Control
這樣的符號來指代將在(邏輯)目錄Core.Controls
中找到的(物理)文件Control.php
。我們將需要做兩部分實現:
- 指導我們的裝載機
Core.Controls
被映射到物理目錄/controls
。
- 在該目錄中搜索
Control.php
。
所以這裏是一個開始:
class Loader {
private static $dirMap = array();
public static function Register($virtual, $physical) {
self::$dirMap[$virtual] = $physical;
}
public static function Include($file) {
$pos = strrpos($file, '.');
if ($pos === false) {
die('Error: expected at least one dot.');
}
$path = substr($file, 0, $pos);
$file = substr($file, $pos + 1);
if (!isset(self::$dirMap[$path])) {
die('Unknown virtual directory: '.$path);
}
include (self::$dirMap[$path].'/'.$file.'.php');
}
}
你會使用這樣的裝載機:
// This will probably be done on application startup.
// We need to use an absolute path here, but this is not hard to get with
// e.g. dirname(_FILE_) from your setup script or some such.
// Hardcoded for the example.
Loader::Register('Core.Controls', '/controls');
// And then at some other point:
Loader::Include('Core.Controls.Control');
當然,這個例子是最起碼的,做一些有用的東西,但你可以看到它允許你做什麼。
道歉,如果我犯了一些小錯誤,我正在打字,因爲我走了。 :)
來源
2011-03-23 02:11:36
Jon
我也有這個問題,我已經到了PHP的結果,真的沒有一個很好的包系統。 Netbeans雖然有幫助。 – 2011-03-23 02:10:03