php Flight的源码分析(1)- 总体介绍

php Flight的源码分析(1)- 总体介绍
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( $namearray  $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框架的核心



你可能感兴趣的:(php Flight的源码分析(1)- 总体介绍)