Yii PHP 框架分析 (一)

publicstaticfunctionautoload($className)

{

//useincludesothattheerrorPHPfilemayappear

if(isset(self::$_coreClasses[$className]))

include(YII_PATH.self::$_coreClasses[$className]);

elseif(isset(self::$_classes[$className]))

include(self::$_classes[$className]);

else

include($className.'.php');

}

可以看到YiiBase的静态成员$_coreClasses数组里预先存放着Yii系统自身用到的类对应的文件路径:

privatestatic$_coreClasses=array(

'CApplication'=>'/base/CApplication.php',

'CBehavior'=>'/base/CBehavior.php',

'CComponent'=>'/base/CComponent.php',

...

)

非coreClasse的类注册在YiiBase的$_classes数组中:

privatestatic$_classes=array();

其他的类需要用Yii::import()讲类路径导入PHPincludepaths中,直接include($className.'.php')

3.CWebApplication的创建

回到前面的程序入口的Yii::createWebApplication($config)->run();

publicstaticfunctioncreateWebApplication($config=null)

{

returnnewCWebApplication($config);

}

现在autoload机制开始工作了。

当系统执行newCWebApplication()的时候,会自动

include(YII_PATH.'/base/CApplication.php')

将main.php里的配置信息数组$config传递给CWebApplication创建出对象,并执行对象的run()方法启动框架。

CWebApplication类的继承关系

Yii PHP 框架分析 (一)相关文档

最新文档

返回顶部