Flight 是一個快速、簡單、可擴展的 PHP 框架。 你能夠使用 Flight 快速、輕松的構建 RESTful Web 應用程序。
helloworld示例:
require 'flight/Flight.php';
//指定路由
Flight::route('/', function(){
echo 'hello world!';
});
Flight::start()
Flight類本身沒有方法,只有一個靜態成員$engine,這個是框架的引擎,通過魔術方法__callStatic來調用。
public static function __callStatic($name, $params) {
static $initialized = false;
if (!$initialized) {
// 指定自動加載函數和目錄
require_once __DIR__.'/autoload.php';
self::$engine = new \flight\Engine();
$initialized = true;
}
return \flight\core\Dispatcher::invokeMethod(array(self::$engine, $name), $params);
}
類名使用\flight\Engine的方式,是通過Loader類來自動加載的
public static function loadClass($class) {
$class_file = str_replace(array('\\', '_'), '/', $class).'.php';
//在注冊的目錄中尋找文件進行require
foreach (self::$dirs as $dir) {
$file = $dir.'/'.$class_file;
if (file_exists($file)) {
require $file;
return;
}
}
}
Dispatcher用于處理事件的回調,事件可以簡單的認為是方法名,除了調用事件的方法外, 還允許注冊before和after鉤子函數。
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類
負責加載一個HTTP請求,運行指定的服務,并產生一個HTTP響應。
這四個類構建了Flight框架的核心

posted on 2015-04-25 10:25
merlinfang 閱讀(465)
評論(0) 編輯 收藏 引用 所屬分類:
flight