Flight 是一個(gè)快速、簡(jiǎn)單、可擴(kuò)展的 PHP 框架。 你能夠使用 Flight 快速、輕松的構(gòu)建 RESTful Web 應(yīng)用程序。
helloworld示例:
require 'flight/Flight.php';
//指定路由
Flight::route('/', function(){
echo 'hello world!';
});
Flight::start()
Flight類(lèi)本身沒(méi)有方法,只有一個(gè)靜態(tài)成員$engine,這個(gè)是框架的引擎,通過(guò)魔術(shù)方法__callStatic來(lái)調(diào)用。
public static function __callStatic($name, $params) {
static $initialized = false;
if (!$initialized) {
// 指定自動(dòng)加載函數(shù)和目錄
require_once __DIR__.'/autoload.php';
self::$engine = new \flight\Engine();
$initialized = true;
}
return \flight\core\Dispatcher::invokeMethod(array(self::$engine, $name), $params);
}
類(lèi)名使用\flight\Engine的方式,是通過(guò)Loader類(lèi)來(lái)自動(dòng)加載的
public static function loadClass($class) {
$class_file = str_replace(array('\\', '_'), '/', $class).'.php';
//在注冊(cè)的目錄中尋找文件進(jìn)行require
foreach (self::$dirs as $dir) {
$file = $dir.'/'.$class_file;
if (file_exists($file)) {
require $file;
return;
}
}
}
Dispatcher用于處理事件的回調(diào),事件可以簡(jiǎn)單的認(rèn)為是方法名,除了調(diào)用事件的方法外, 還允許注冊(cè)before和after鉤子函數(shù)。
public function run($name, array $params = array()) {
$output = '';
// Run pre-filters
if (!empty($this->filters[$name]['before'])) {
$this->filter($this->filters[$name]['before'], $params, $output);
}
// Run requested method
$output = $this->execute($this->get($name), $params);
// Run post-filters
if (!empty($this->filters[$name]['after'])) {
$this->filter($this->filters[$name]['after'], $params, $output);
}
return $output;
}
Engine類(lèi)
負(fù)責(zé)加載一個(gè)HTTP請(qǐng)求,運(yùn)行指定的服務(wù),并產(chǎn)生一個(gè)HTTP響應(yīng)。
這四個(gè)類(lèi)構(gòu)建了Flight框架的核心

posted on 2015-04-25 10:25
merlinfang 閱讀(478)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
flight