zoukankan      html  css  js  c++  java
  • 如何分析一个完整的系统(系统源码分析思路一)

    1、原则

      吸收作者的思想为我所用

      不能像看小说一样走马观花,每个方法都要弄清楚,遇到不明白的方法就要看手册,并记录亮点的地方。

        三部曲:

          1、开始前写好用例,弄好环境

          2、分析的时候要做好记录

          3、完了做好总结

    2、开始操作以一个CMS 为例

      准备操作:

        1、服务器环境

        2、手册准备好

        3、编辑器准备好

      分析路线图:

      分析用例:

        

        1、前端显示部分

           首页:导航、内容、友情链接

           1、文章     分类:新闻、产品、系统公告   功能:摘要、列表、分页、详细

           2、图片   幻灯、产品、公司介绍图片

           3、单页     公司介绍、人才招聘

        2、后台管理模块

          1、文章、新闻、产品、单页的CURD

          2、图片、视频上传

          3、链接添加删除

          4、留言管理

          5、招聘管理 

    3、开始分析做笔记

      1、在components下面找到了一个截取utf8的类,原理是utf8使用变长的方式,1-3个字节表示一个字符, 如果第一个字符的ascll 值大于224那么后面3个字节组成一个汉字。如果大于192的就是2个字节组成,如果大于65就是字母,一个字节组成,小于65就是标点。

        分析了下写了另一篇博客。

      2、 系统前台定义了前台控制器基类

        

    View Code
     1 /**
     2  * @name    前台控制器基类
     3  */
     4 class Controller extends CController
     5 {
     6     /**
     7      * @name    设置默认视图
     8      */
     9     public $layout='//layouts/main';
    10     public $action_id;
    11     public $controller_id;
    12     public $page_id;
    13     public $referrer;
    14 
    15     protected function beforeAction($action)
    16     {
    17         $this->controller_id = Yii::app()->controller->id;
    18         $this->action_id     = Yii::app()->controller->action->id;
    19         $this->page_id       = $this->controller_id.'/'.$this->action_id;
    20         $this->referrer      = Yii::app()->request->getUrlReferrer();
    21         return true;
    22     }
    23 }

           定义了布局文件的位置,和参数,统一前台页面的风格

      3、值得注意的是一个beforeAction方法  

      形式如下

    protected function beforeAction($action){}
    

      这样Yii会在action前去执行这部分代码,可以初始化一部分数据,比如

      

            $this->controller_id = Yii::app()->controller->id; //定义控制器Id
            $this->action_id     = Yii::app()->controller->action->id; //定义actionID
            $this->page_id       = $this->controller_id.'/'.$this->action_id; //当前页面ID
            $this->referrer      = Yii::app()->request->getUrlReferrer();  //返回url
            return true;  //如果返回false停止执行

      4、浏览了一边前端的Controller

        基本思路为

           使用beforAction()初始化一些脚本样式,然后每个action 实例化相关的Behavior,使用behavior得到数据,最后使用$this->render渲染到页面上

      5、前端主要就是展示的页面,没有太多的逻辑,然后分析后端的admin模块代码,开始分析管理员的登陆过程

        登陆的步骤整理为:

           1、判断是否已经登陆,如果已经登陆,转向页面

           2、验证输入,数据格式,这里使用一个formModel来操作验证比较好

           3、继续2步骤,严格验证密码(使用UserIdentity类来进行验证)

           4、登陆或者返回错误

           5、写入session数据,然后转向

         

        突然想起:
          写一个方法的技巧:
          参数、过程、返回 即输入、操作、输出
          关于model,像类似删除的操作应该类似 对象->delete(),不要写成delete($id),应为要对象存在才能删除,前者更加面向对象

       6、登陆成功后依次分析下面的模块,首先是登陆日志功能       

         这里有一个技术点:分页

        来看下分页原理:

          

     1 //登陆成功后,显示登陆日志,然后分页
     2 public function userlog(){
     3         $criteria = new CDbCriteria;  //条件
     4         $criteria->order='last_time desc';  //排序方式
     5         
     6         $count=User::model()->count($criteria);   //计算记录条数
     7         $pages=new CPagination($count);   //实例化分页类
     8         $pages->pageSize=10;       //设置分页数据
     9            $pages->applyLimit($criteria);  //应用分页条件
    10         $users = User::Model()->findAll($criteria);   //获取数据
    11         
    12         return compact('users','pages');
    13     }

      view页面使用了一个widget来接收数据

      

    <?php $this->widget("CFLinkPagerAdminWidget",array("pages"=>$pages));?>

      7、开始分析视频管理模块

         对视频的操作具有一下:

          1、上传 2、上传封面 3、编辑 4、禁用 5、列表 6、显示 7、存储 8、查找

         上传分析:

          

      

         

  • 相关阅读:
    鼠标拖动DIV移动
    JS中事件&对象
    响应式与弹性布局
    JS中的变量和输入输出
    JS中的运算符&JS中的分支结构
    HTML基本标签
    CSS基础语法
    JS中循环结构&函数
    String 二
    StringBuffer
  • 原文地址:https://www.cnblogs.com/linksgo2011/p/2865993.html
Copyright © 2011-2022 走看看