phpcms v9开源开发框架基础mvc解读
- 根据对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解读的更多相关文章
- PHPCMS V9 学习总结
在实现PHPCMS网站过程中,根据业务需求,我们遇到很多问题,特此总结如下,以便大家参考学习. [1]PHPCMS V9系统目录简析 在研究所有问题之前,请先了解一下系统的文件目录结构,具体如下图所示 ...
- PHPCMS V9 学习总结(转)
转自:http://www.cnblogs.com/Braveliu/p/5074930.html 在实现PHPCMS网站过程中,根据业务需求,我们遇到很多问题,特此总结如下,以便大家参考学习. [1 ...
- PHPCMS V9二次开发便捷自定义后台入口文件夹
phpcms v9二次开发便捷自定义后台入口文件夹 最新发布的phpcms v9由于采用了mvc的设计模式,所以它的后台访问地址是固定的,虽然可以通过修改路由配置文件来实现修改,但每次都修改路由配置文 ...
- phpcms V9 MVC模式 与 URL访问解析
[1]URL访问解析 观察访问网页时的网址,可以得出模块访问方法,如下示例: http://www.abcd.com.cn/phpcms/index.php?m=content&c=index ...
- phpcms(1)phpcms V9 MVC模式 与 URL访问解析(转)
[1]URL访问解析 观察访问网页时的网址,可以得出模块访问方法,如下示例: http://www.abcd.com.cn/phpcms/index.php?m=content&c=index ...
- 怎么安装phpcms?PHPCMS V9安装图文教程
Phpcms是国内领先的网站内容管理系统, 同时也是一个开源的PHP开发框架.PHPCMS V9目前已提供文章.图片.下载等内容模型,在此基础上可非常方便的扩展出信息.房产.交友.点评等功能.已有的模 ...
- phpcms v9网站搬家更换域名的方法
PHPCMS 是国内领先的网站管理系统,同时也是一个开源的PHP开发框架. 本文介绍phpcms v9网站搬家更换域名的方法. 1.在新的主机空间把phpcms安装好. 新安装的版本一定要和准备搬迁的 ...
- PHPCMS V9教程之快速入门
这篇文章要为大家来介绍PHPCMS V9这个系统的一些基本知识,PHPCMS是基于面向对象的,严格的安装MVC开发模式开发的CMS系统,同时他还是一个非 常不错的PHP框架.下面我们一起看一下PHPC ...
- phpcms V9 添加模块
为phpcms创建一个模块的开发流程 [1]创建模块目录 通过前面的学习,我们已经知道phpcms V9框架中的模块位于phcms/modules目录中,每一个目录称之为一个模块. 如果要创建一个模块 ...
随机推荐
- StateListDrawable 资源
StateListDrawable 用于组织多个 Drawable 对象.当使用 StateListDrawable 作为目标组件 的背景.前景图片时,StateListDrawable 对象所显示的 ...
- 多线程同步、异步(BeginInvoke)
一.线程的基础知识 1 System.Threading.Thread类 System.Threading.Thread是用于控制线程的基础类,通过Thread可以控制当前应用程序域中线程的创建.挂起 ...
- 五子棋——C++
最近在学C++,这个是照葫芦画瓢的五子棋C++版- - 依赖SDL_PingGe_1.3,很多实用的函数,类我都封装成DLL了调用起来真是舒服啊.. 不过一方面要对DLL做测试,一方面要开发,一个人还 ...
- 糟糠之妻下堂,娇俏公主上位——更换宝马三系座椅作业 - 切诺基 Jeep家族 越野e族论坛 越野/SUV/旅行/赛事/改装/互动中心
糟糠之妻下堂,娇俏公主上位--更换宝马三系座椅作业 - 切诺基 Jeep家族 越野e族论坛 越野/SUV/旅行/赛事/改装/互动中心 舒适性没有想象中好.我觉得理想的座椅,应该象是在你最疲倦的时候,把 ...
- W3C词汇和术语表
以A字母开头的词汇 英文 中文 abstract module 抽象模组 access 访问.存取 access control 存取控制 access control information 存取控 ...
- Spring 3.2 ClassMetadataReadingVisitor 错误
nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.core.type.clas ...
- Windows 如何在cmd命令行中查看、修改、删除与添加环境变量
转自:http://www.cnblogs.com/saptechnique/archive/2013/02/17/2914222.html 首先明确一点: 所有的在cmd命令行下对环境变量的修改只对 ...
- php几个不起眼儿的小技巧
说是不起眼儿的小技巧,其实应该说是不常用的常规应用吧.很多事情就是这样,知道是一马事儿,会用是一马事儿,精习又是另外一马事儿.而成为高手更是需要扎实的基本功. str_repeat 重复输出字符串就靠 ...
- 解决NoSuchMethodError with Spring MutableValues异常问题
今天下午项目启动时,遇到一个异常,导致无法启动: [ 221] ERROR - work.web.context.ContextLoader - Context initialization fail ...
- asp.net 负载均衡下session存储的解决方法
转自:http://www.cnblogs.com/david100zhang/archive/2011/12/28/2304917.html 在WEB场中,动态网页往往会因为几台主机做了负载而产生S ...