// framework/core/Framework.class.php
class Framework {
public static function run() {
echo "run()";
}
兄弟連教育www.lampbrother.net在這個示範中建立了一個靜態方法run(),現在讓我們通過入口檔案index.php測試一下:
基礎Controller類
通常在架構的核心類中都有一個基礎的控制器。在symfony中,被稱為sfAction;在iOS中,被稱為UIViewController。在這裡我們命名為Controller,在framework/core下建立Controller.class.php
// Base Controller
class Controller{
// Base Controller has a property called $loader, it is an instance of Loader class(introduced later)
protected $loader;
public function __construct(){
$this->loader = new Loader();
}
public function redirect($url,$message,$wait = 0){
if ($wait == 0){
header("Location:$url");
} else {
include CURR_VIEW_PATH . "message.html";
}
exit;
}
}
基礎控制器有一個變數$loader,它是Loader類的執行個體化(後面介紹)。準確的說,$this->loader是一個變數指向了被執行個體化的Load類。在這裡我不過多的討論,但是這的確是一個非常關鍵的概念。我遇到過一些PHP開發人員相信在這個語句之後:
$this->loader = new Loader();
$this->load是一個對象。不,它只是一個引用。這是從Java中開始使用的,在Java之前,在C++和Objective C中被稱為指標。引用是個封裝的指標類型。比如,在iOS(O-C)中,我們建立了一個對象:
UIButton *btn = [UIButton alloc] init];
載入類
在framework.class.php中,我們已經封裝好了應用的控制器和模型的自動載入。但是如何自動載入在framework目錄中的類呢?現在我們可以建立一個Loader類,它會載入framework目錄中的類和函數。當我們載入framework類時,只需要調用這個Loader類中的方法即可。
class Loader{
// Load library classes
public function library($lib){
include LIB_PATH . "$lib.class.php";
}
// loader helper functions. Naming conversion is xxx_helper.php;
public function helper($helper){
include HELPER_PATH . "{$helper}_helper.php";
}
}