Yii源码阅读心得(持续更新)

今天开始阅读Yii的源码,想深入了解一下Yii的工作原理,同时学习一下优秀的编码规范和风格。在次记录一下阅读中的小心得。

就从Yii自动生成的网站入口开始吧。

 

index.php

    整个网站的入口,主要对一些路径和参数的配置,并启动web应用。

1  $yii = dirname ( __FILE__ ).'/../yii/framework/yii.php';
2  $config = dirname ( __FILE__ ).'/protected/config/main.php';
3 
4  defined ('YII_DEBUG') or  define ('YII_DEBUG', true );
5  //  specify how many levels of call stack should be shown in each log message
6  defined ('YII_TRACE_LEVEL') or  define ('YII_TRACE_LEVEL',3);
7 
8  require_once ( $yii );
9  Yii::createWebApplication( $config )->run();
    第4行短路语句的形式会经常用到:如果已经定义了Yii_DEBUG, 则or后面的语句将不会执行。

    第8行将yii框架的内容包含进来,那么顺着执行流程去看看yii.php。

 

yii.php

1  require ( dirname ( __FILE__ ).'/YiiBase.php');
2 
3  class  Yii  extends  YiiBase { }

    这个文件很简单,只有两行,其实是一个框架功能的辅助类,用户可以编写自己的Yii类来定制YiiBase的相关功能。

    注:dirname(__FILE__)指当前文件的绝对路径,这要写要比../便于维护。

 

YiiBase.php

    YiiBase类为Yii框架提供了公共的基础功能,如:

    别名管理和对象创建管理

 

    这里有一个地方值得注意,即系统分隔符的使用,如下:

defined ('YII_ZII_PATH') or  define ('YII_ZII_PATH',YII_PATH. DIRECTORY_SEPARATOR .'zii');

    因为windows下是'\',linux下是'/',用DIRECTORY_SEPARATOR就能很好地解决。

    还有一个很巧妙地实现singleton的地方,可以将空的$_app赋值,也可以将非空$_app删除,即赋为null:

1  public  static  function  setApplication( $app )
2      {
3          if (self:: $_app === null  ||  $app === null )
4              self:: $_app = $app ;
5          else
6              throw  new  CException(Yii::t('yii','Yii application can only be created once.'));
7      }

    

    

 

   

 

 

  

  

转载于:https://www.cnblogs.com/hi-bazinga/archive/2012/05/10/2494044.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值