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 阅读(446)
评论(0) 编辑 收藏 引用 所属分类:
flight