教学之友,学习之友。

站长教学网

当前位置: 站长教学网 > 网站编程 > PHP教程 >

phpcmsV9开源mvc框架基础讲解

时间:2012-08-24 15:43来源:未知 作者:ken 点击:

\

简单的解析下mvc  你可以这样了解 m模型也就是数据库操作 v视图  c控制器 通过url来判断调用m和v来完成请求,本身没数据库操作。
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)视图(V)控制器(C),它们各自处理自己的任务。
根目录(现在利用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方面
下面看看他的内容怎么写 站长教学网 eduyo.com
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。
}
}
(责任编辑:ken)
TAG标签: V9 框架 phpcms mvc
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容