• 根据对mvc的了解
  • 简要写个mvc框架 也谈不上框架 希望对新手有帮助
  • 简单的解析下mvc  你可以这样了解 m模型也就是数据库操作 v视图  c控制器 通过url来判断调用m和v来完成请求,本身没数据库操作。
  • 根目录(现在利用v9文件格式)
  • index.php 入口文件
  • |  –  api  接口文件目录
  • |  –  caches 缓存文件目录
  • |  – configs 系统配置文件目录
  • |  – caches_* 系统缓存目录
  • |  –  phpcms  phpcms框架主目录
  • |  – languages 框架语言包目录
  • |  – libs 框架主类库、主函数库目录
  • |  – model 框架数据库模型目录
  • |  – modules 框架模块目录
  • |  – templates 框架系统模板目录
  • |  – base.php 框架主程序
  • 首先根目录新建一个index.php 编码随意 我这里用utf-8
  • 内容如下
  • define('root',dirname(__file__).directory.seprartor);//根目录
  • include root.'phpcms/base.php'; //包含根目录phpcms文件夹下面的base.php
  • base:run(); //默认加载base类下面的静态run方法。
  • 下面是base.php //位于phpcms下面。
  • 内容如下
  • define('pc_path',dirname(__file__).directory.seprartor);//框架主目录
  • //其他定义省略
  • class base
  • {
  • //定义初始化方法
  • public static function run()
  • {
  • echo '默认加载我';
  • 自动载入app类
  • base::load_sys_class('app'); app文件内容请看下面
  • }
  • //定义加载系统类的方法$classname类名称,$path地址,$new是否初始化
  • public static load_sys_class($classname,$path='',$new=1)
  • {
  • if($path=='') $path = 'libs/classes/';   //如果地址不存在 自动选择到系统类文件夹下
  • if(file_exists(pc_path.$path.$classname.'class.php')) //存在该文件
  • {
  • include  pc_path.$path.$classname.'class.php'; //包含他
  • if($new)
  • {
  • return new $classname;   //初始化
  • }
  • else
  • {
  • return true;
  • }
  • }
  • else
  • {
  • 文件不存在,请建立;或者直接 return false;
  • }
  • }
  • }
  • app.class.php  位于phpcms/lib/classes 系统类
  • 内容如下
  • class app
  • {
  • 首先定义一个构造函数 让程序默认加载
  • public function __construct()
  • {
  • echo '默认加载到这里咯';//打开index。php就会看到这段话。
  • //初始化一些值
  • define('route_m',$_request['m'] ? $_request['m'] : 'content'); //如果有传递m就赋值 否则默认给个值
  • define('route_c',$_request['c'] ? $_request['c'] : 'index'); //如果有传递c就赋值 否则默认给个值
  • define('route_a',$_request['a'] ? $_request['a'] : 'init'); //如果有传递a就赋值 否则默认给个值
  • $this->init();//默认执行
  • }
  • //以下两个方法引用官方 自己写也就和那个意思一样 偷懒
  • /**
  • * 调用件事
  • */
  • private function init() {
  • $controller = $this->load_controller();//这里已经是对象了
  • if (method_exists($controller, route_a)) {
  • if (preg_match('/^[_]/i', route_a)) {
  • exit('you are visiting the action is to protect the private action');
  • } else {
  • call_user_func(array($controller, route_a)); //?index.php?m=content&c=index&a=init 默认url   主要判断init是否存在index类里面的一个方法 是的话就调用 这个就是c做的事情根据url来操作对应的m和a
  • }
  • } else {
  • exit('action does not exist.');
  • }
  • }
  • /**
  • * 加载控制器
  • * @param string $filename
  • * @param string $m
  • * @return obj
  • */
  • private function load_controller($filename = '', $m = '') {
  • if (empty($filename)) $filename = route_c;
  • if (empty($m)) $m = route_m;
  • $filepath = pc_path.'modules'.directory_separator.$m.directory_separator.$filename.'.php'; //地址就是phpcms/modules/content/index.php  为什么是这个地址 因为是模块开发
  • if (file_exists($filepath)) {
  • $classname = $filename;
  • include $filepath;
  • return new $classname; //返回new过的对象
  • } else {
  • exit('controller does not exist.');
  • }
  • }
  • }
  • 这样打开index。php默认就运行的 phpcms/modules/content/index.php  index类下面的init方面
  • 下面看看他的内容怎么写
  • class index
  • {
  • 设置一个连接数据库属性
  • private $db  = null;
  • public function __construct()
  • {
  • 初始化一些值
  • 写一个连接数据库的类mysql
  • include 那个数据库类;
  • $this->db= new mysql();
  • $this->db->connect('');连接数据库 具体自己写写
  • }
  • //默认加载
  • public function init()
  • {
  • echo '默认就加载到我这里了';
  • $result = $this->db->query('select * from v9_admin');
  • while($res=$this->db->fetch($result))
  • {
  • print_r($res);
  • }
  • 然后
  • include 模板文件 //
  • 以上就是简单的实现一些mvc。
  • }

phpcms v9开源开发框架基础mvc解读的更多相关文章

  1. PHPCMS V9 学习总结

    在实现PHPCMS网站过程中,根据业务需求,我们遇到很多问题,特此总结如下,以便大家参考学习. [1]PHPCMS V9系统目录简析 在研究所有问题之前,请先了解一下系统的文件目录结构,具体如下图所示 ...

  2. PHPCMS V9 学习总结(转)

    转自:http://www.cnblogs.com/Braveliu/p/5074930.html 在实现PHPCMS网站过程中,根据业务需求,我们遇到很多问题,特此总结如下,以便大家参考学习. [1 ...

  3. PHPCMS V9二次开发便捷自定义后台入口文件夹

    phpcms v9二次开发便捷自定义后台入口文件夹 最新发布的phpcms v9由于采用了mvc的设计模式,所以它的后台访问地址是固定的,虽然可以通过修改路由配置文件来实现修改,但每次都修改路由配置文 ...

  4. phpcms V9 MVC模式 与 URL访问解析

    [1]URL访问解析 观察访问网页时的网址,可以得出模块访问方法,如下示例: http://www.abcd.com.cn/phpcms/index.php?m=content&c=index ...

  5. phpcms(1)phpcms V9 MVC模式 与 URL访问解析(转)

    [1]URL访问解析 观察访问网页时的网址,可以得出模块访问方法,如下示例: http://www.abcd.com.cn/phpcms/index.php?m=content&c=index ...

  6. 怎么安装phpcms?PHPCMS V9安装图文教程

    Phpcms是国内领先的网站内容管理系统, 同时也是一个开源的PHP开发框架.PHPCMS V9目前已提供文章.图片.下载等内容模型,在此基础上可非常方便的扩展出信息.房产.交友.点评等功能.已有的模 ...

  7. phpcms v9网站搬家更换域名的方法

    PHPCMS 是国内领先的网站管理系统,同时也是一个开源的PHP开发框架. 本文介绍phpcms v9网站搬家更换域名的方法. 1.在新的主机空间把phpcms安装好. 新安装的版本一定要和准备搬迁的 ...

  8. PHPCMS V9教程之快速入门

    这篇文章要为大家来介绍PHPCMS V9这个系统的一些基本知识,PHPCMS是基于面向对象的,严格的安装MVC开发模式开发的CMS系统,同时他还是一个非 常不错的PHP框架.下面我们一起看一下PHPC ...

  9. phpcms V9 添加模块

    为phpcms创建一个模块的开发流程 [1]创建模块目录 通过前面的学习,我们已经知道phpcms V9框架中的模块位于phcms/modules目录中,每一个目录称之为一个模块. 如果要创建一个模块 ...

随机推荐

  1. ATR的基本结构与意义(无历史字符部分)

    Reset 3B FA 13 00 00 81 31 FE 45 4A 43 4F 50 34 31 56 32 32 31 96 复位应答 ATR TS( The Initial character ...

  2. html5中使用标签支持视频播放

    <!--定义视频--> <!-- <video src="E:/ext-4.2.1.883/learnHtml5/Wildlife.wmv" control ...

  3. 【HDOJ】1277 全文检索

    AC自动机,静态数组,动态分配TLE. /* 1277 */ #include <iostream> #include <cstdio> #include <cstrin ...

  4. 【HDOJ】1276 士兵队列训练问题

    初看这道题目很像尤瑟夫问题, 区别是每次都是从1开始.解法也很类似.数学解递推公式.假定第K次报数后,余下人数不超过3个人.若第K次为1-3报数,那么由这三个数的当前索引n可推上一次报数之前的编号为n ...

  5. Javascript语法基础

    Javascript语法基础   一.基本数据类型   JavaScript中支持数字.字符串和布尔值三种基本数据类型: 1.数字 数字型是JavaScript中的基本数据类型.在JavaScript ...

  6. 【转】HashMap和HashSet的区别

    原文网址:http://www.importnew.com/6931.html HashMap和HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的 ...

  7. 4Sum——LeetCode

    Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...

  8. dos 下 注册win 组件 ocx 后缀的

    C:\WINDOWS\system32>regsvr32 NTGraph.ocx

  9. .Hibernate一对一映射与组件映射

    1.按照外键映射(Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射) 实现需要: 创建实体类Users1和Resume1 public class Users1 { p ...

  10. git clone之后自动checkout文件处理

    这个问题发生是因为不同操作系统的行结束符不一致导致的,可在clone之后在仓库根目录修改.gitattributes文件 简单处理的话,注释* text=auto这行即可.也可根据不同系统,做相应设定 ...