kohana是一个非常优秀,强劲,且轻量级的php框架,运用到了php5的新特性,如auto_load,对于小型网站来说,是非常不错的选择。
中文手册也非常的全,比较容易上手,具体见中文官方网站:http://v2.kohanacn.com/docs/
本文是要切入kohana的内部,分析其启动过程:
1.index.php
单一入口主文件,基本上是设置模块路径,全局变量等.如错误信息,系统模块路径,网站目录等.
其他工作转给 require SYSPATH.'core/Bootstrap'.EXT;完成。
值得提的是,如果我们想捕获整个程序的异常,那可以把他改成:
try{
require SYSPATH.'core/Bootstrap'.EXT;
}catch($e){
//处理错误,提示有好页面等等
}
2.Bootstrap.php
这个类用来加载一些必须的类库,初始化启动信息后,完成执行过程。并且记录部分流程的执行时间信息。
3.konana类,这是核心类,php执行核心操作都在此定义,在此完成初始化
Kohana::setup()
回到Bootstap.php
剩下的就是Event.run了,调用各个处理程序,这些函数的注册过程参见kohana::setup();
'system.routing'对应的注册方法有2个:Router.find_uri,Router.setup,作用在Kohana.setup里已经介绍过了,这里重点介绍
system.execute对应的函数是Kohana.instance,此方法的任务是创建唯一的控制器对象,调用控制器的方法,中间会调用一些钩子时间,方便我们想在某个环节做一些处理,还做了方法的私有化判断。
回到Bootsarp.php,之后执行的是Event::run('system.shutdown');调用的是Kohana.shutdown,做一些清理工作:刷新缓冲,再把缓冲里面的数据进行全局替换.
ob函数是php内部缓冲处理模块:
function out($a){
global $html;
$html = '<div style="color:red">'.$a.'</div>';//file_put_contents('c:/2.txt',$a);die;
return $html;
}
//开启缓冲,并且设置缓冲函数为out
ob_start('out');
未完待续