Yii PHP 框架分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Yii PHP 框架分析

Yii PHP 框架分析 Yii PHP 框架分析 (一) 作者:wdy /delphiss/blog/item/f7da86d787ad4b.html 基于yii1.0.8的代码分析的。用了一个下午整理的,流水账,感兴趣的凑合着先看,国庆期间推出个整理修改版,然后再完成后两个部分(MVC和Yii的整体结构分析)。 1. 启动 网站的唯一入口程序 index.php : $yii=dirname(__FILE__)./../framework/yii.php; $config=dirname(__FILE__)./protected/config/main.php; // remove the following line when in production mode defined(YII_DEBUG) or define(YII_DEBUG,true); require_once($yii); Yii::createWebApplication($config)-run(); 上面的require_once($yii) 引用出了后面要用到的全局类Yii,Yii类是YiiBase类的完全继承: class Yii extends YiiBase { } 系统的全局访问都是通过Yii类(即YiiBase类)来实现的,Yii类的成员和方法都是static类型。 2. 类加载 Yii利用PHP5提供的spl库来完成类的自动加载。在YiiBase.php 文件结尾处 spl_autoload_register(array(YiiBase,autoload)); 将YiiBase类的静态方法autoload 注册为类加载器。 PHP autoload 的简单原理就是执行 new 创建对象或通过类名访问静态成员时,系统将类名传递给被注册的类加载器函数,类加载器函数根据类名自行找到对应的类文件并include 。 下面是YiiBase类的autoload方法: public static function autoload($className) { // use include so that the error PHP file may appear if(isset(self::$_coreClasses[$className])) include(YII_PATH.self::$_coreClasses[$className]); else if(isset(self::$_classes[$className])) include(self::$_classes[$className]); else include($className..php); } 可以看到YiiBase的静态成员$_coreClasses 数组里预先存放着Yii系统自身用到的类对应的文件路径: private static $_coreClasses=array( CApplication = /base/CApplication.php, CBehavior = /base/CBehavior.php, CComponent = /base/CComponent.php, ... ) 非 coreClasse 的类注册在YiiBase的$_classes 数组中: private static $_classes=array(); 其他的类需要用Yii::import()讲类路径导入PHP include paths 中,直接 include($className..php) 3. CWebApplication的创建 回到前面的程序入口的 Yii::createWebApplication($config)-run(); public static function createWebApplication($config=null) { return new CWebApplication($config); } 现在autoload机制开始工作了。 当系统 执行 new CWebApplication() 的时候,会自动 include(YII_PATH./base/CApplication.php) 将main.php里的配置信息数组$config传递给CWebApplication创建出对象,并执行对象的run() 方法启动框架。 CWebApplication类的继承关系 CWebApplication - CApplication - CModule - CComponent $config先被传递给CApplication的构造函数

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档