• 根据对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. linux下删除修改时间为某天之前的文件

    time_file #新建一个标识文件,修改时间为2014年4月9日0点0分 find . ! -cnewer time_file | xargs rm #删除最后修改时间在上述标识文件之前的所有文件

  2. Xamarin.Forms本地化多语言

    Forms 右键新建文件夹 Localization 新建文件TranslateExtension.cs namespace Localization { /// <summary> // ...

  3. 彻底解决Unknown ASTNode child: LambdaExpression 错误

    错误原因:        在于 androidStudio lint检查的时候 会把Lamda表达式 认为是错误的.解决办法:    1.打开项目中中的lint.xml改为如下格式: <?xml ...

  4. HDU2048(标准错排问题)

    错排问题. 将错排方法数记为D(n). 1. 把第n个元素放在一个位置,比如k,有n-1种方法. 2. 编号为k的元素有两种放法. <1> 把它放到位置n.那么对于剩下的n-2个元素,就有 ...

  5. 红领的短板:线下“O”瓶颈_财经频道_一财网

    红领的短板:线下"O"瓶颈_财经频道_一财网 红领的短板:线下"O"瓶颈

  6. casperjs配合phantomjs实现自动登录百度,模拟点击等等操作 - 怕虎在线www.ipahoo.com图文教程 - 怕虎在线

    微信支付取消2万元保证金门槛,这是全民电商来袭!-观点-虎嗅网 微信支付取消2万元保证金门槛,这是全民电商来袭! casperjs配合phantomjs实现自动登录百度,模拟点击等等操作 - 怕虎在线 ...

  7. 基于Struts2 的日志管理系统的Java实现

    1.首先,项目的架构如下:          2.com.sxl.dba 中:OracleConnector.java package com.sxl.dba; import java.sql.*; ...

  8. int.Parse()与int.TryParse()

      int i = -1;bool b = int.TryParse(null, out i);执行完毕后,b等于false,i等于0,而不是等于-1,切记. int i = -1;bool b = ...

  9. motan源码分析四:客户端调用服务

    在第一章中,我们分析了服务的发布与注册,本章中将简单的分析一下客户端调用服务的代码及流程,本文将以spring加载的方式进行分析. 1.在DemoRpcClient类的main()方法中加载类: Ap ...

  10. 那些年,学swift踩过的坑

    最近在学swift,本以为多是语法与oc不同,而且都是使用相同的cocoa框架,相同的API,但是或多或少还是有些坑在里,为了避免以后再踩,在这里记下了,以后发现新的坑,也会慢慢在这里加上 [TOC] ...