Yii分析7:runController的执行
?
/** * …… * 这个方法以下面的顺序创建一个控制器 * 1. 如果第一个字段在controllerMap(初始配置)中,则使用对应的控制器配置来创建控制器* 2.如果第一个字段是一个模块(module)ID,则使用相应的模块来创建控制器* 3.如果通过上面两项均无法创建控制器,将会搜索controllerPath(根目录对应的controller文件夹)来创建对应的控制器。 * …… */public function createController($route,$owner=null){……}
?
也就是说,对于一个aaaa/bbbb/cccc的路由,yii首先从config/main.php中定义的controllerMap去寻找是否有名为aaaa的controller,如果有,那么就已aaaa为controller进行创建,否则再去寻找是否有名为aaaa的模块,如果有,那么就使用aaaa模块的名为bbbb的controller进行创建,否则在protected/controllers下寻找是否有名为aaaa的controller。
?
创建完Controller之后,就进入具体Controller类的run方法了,即实际的运行函数。