zoukankan      html  css  js  c++  java
  • 模仿写一个小型网站框架

    之前的博文中讲述MVC的时候,介绍了美女同学的简单框架one。本来就打算要在美女框架的基础上有所改进,至少能够独立搭出一个成型的小网站出来(有界面交互,有db读写等)。刚好最近工作内容不同,故借此机会搭建了一个小型的网站。

    网站非常简单,框架大部分思想还是借鉴sunny美女。希望后续自己能够使用比较流行的github搭建自己的博客网站,或是采用nodejs+一些主题。总之需要改进的空间有很多,关键在于耐心和求知欲。
     
    1. 代码架构-----各个部分的作用以及相关的依赖
    sunny美女的框架的结构(如下图所示)确实简洁明了。
    美女同学没有使用模版引擎,而是自己写了一个view类,也没有使用其他的mysql访问类,而是自己写一个mysql类来访问db。这样写的好处是框架比较轻,也方便学习代码阅读者了解框架细节。
    但是如果要用这个框架搭建一个网站,就会比较难用。
    所以我在美女同学的基础上引进了smarty的模版引擎,PDO的访问类,并且为了更加成型,参照以前做过的一个管理碗盏,做了一个主界面,写一些简单的js,通过js将每次用户请求访问的数据在一个man div中显示出来。
    改进后的代码结构如下:
     
    • index.php是网站的统一入口文件。获取用户的请求参数。
    • library是框架所依赖的一些库。
    • core.php是入口文件调用的主函数Core::run($requestParms)是在本文件中实现的。本文件主要实现了加载依赖文件loadFile;,初始化控制器以初始化view对象(initController); 解析请求参数,获取路由控制信息(Router),通过c参数知道调用哪个控制类,同个a参数知道调用哪个控制类的哪个函数。
    • smarty文件夹就是所依赖的smarty模版引擎。
    • logs 可以存放运行的相关日志。
    • model主要实现相关数据的读写和逻辑处理类
    • static整个亚太存储静态文件。
    • view存储的是一些视图模版文件,可以通过smarty对模版文件某些变量赋值,并且将界面display出来。
     
    2. 数据流---主要参照MVC框架的介绍
    解析url获取用户请求,将用户请求的参数,转化为相应的controller类的相应action函数,调用该函数请求访问data层,获取处理后的数据,填充到view层,然后渲染在前端显示。
    其实这种有很多细节:
    • 如何解析url将域名转化为服务器ip,并且找到服务器服务程序所在的目录
    • 用户如何通过url将请求参数传回给服务端
    • html,css,js之间如何相互协作,将DOM渲染出来
    • 服务端将处理的结果如何返回给客户端浏览器显示
     
    3. 源代码----提交到我的github
    代码放在github上,大家可以参考。
    运行效果图如下:
     
    4. 小改进:
    (1)通过PDO访问数据库
    $dsn = "mysql:host={$g_databases[$dbname]['host']};port={$g_databases[$dbname]['port']};dbname={$g_databases[$dbname]['dbname']}";
    $db = new PDO($dsn, $g_databases[$dbname]['usr'], $g_databases[$dbname]['pwd'], array(PDO::ATTR_PERSISTENT => true));
    $db->exec("SET NAMES 'utf8';"); // must need to set names utf8, if not, Chinese will be wrong
    (2)使用smarty的模版引擎
    添加了smarty_view访问的baseController类,去掉了library中的controller类和model类
    <?php
    class baseController
    {
        protected $mDefLang = 'CN';
        protected $mView = null;
        protected $mParams = null;
        function __construct($params)
        {
            // 这个需要考虑view,model-----依照最简单的去写
            $this->mView = new View_Smarty();
            $this->mView->caching = false;
            $this->mParams = $params;
        }
    }
     
    5. 感谢
    主要参照了美女sunny的github---一个简单的php框架-----https://github.com/linsunny/one
    参照了之前刚入职做的一个管理网站的架构对上述框架进行精简
    参照了刚入职做的管理网站的主页模版。
  • 相关阅读:
    UVA 408 (13.07.28)
    linux概念之用户,组及权限
    Java实现 蓝桥杯 历届试题 网络寻路
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 九宫重排
    Java实现 蓝桥杯 历届试题 九宫重排
  • 原文地址:https://www.cnblogs.com/TsingLo/p/5125047.html
Copyright © 2011-2022 走看看