Jquery中文網 www.uhadif.co
Jquery中文網 >  建站教程  >  phpcms  >  正文 使用phpcms v9開發基礎的mvc框架

使用phpcms v9開發基礎的mvc框架

發布時間:2014-07-20   編輯:www.uhadif.co
對于mvc的簡單理解:m模型(數據庫操作) ,v視圖,c控制器 通過url來判斷調用m和v來完成請求,本身不操作數據庫。

對于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源碼-網站入口文件index.php
基于jQuery實現的MVC開發框架 CorMVC
php mvc開發模式的一點思考
使用jQuery輕松實現Ajax的實例代碼
JavaScript編程基礎(13)-框架編程
如何讓PHPCMS V9首頁無法只顯示推薦的友情鏈接
每個ASP.NET MVC開發者必須了解的13個擴展點
基于jQuery架構javascript基礎體系
PHPCMS v9后臺登陸提示驗證碼錯誤的解決方法

[關閉]
北京pk赛车历史 山西十一选五 奇迹陕西麻将手机版下载 东莞股票配资招聘 顺丰控股股票分析报告 山西今天十一选五 篮球比分官方网站 天津快乐10分 有坂深雪哪部人气高 深圳风采35选7开奖结果 大众麻将四人麻将游戏 江苏吴中股票行情 3d试机号近100 桥本有菜 北京体彩网 世界杯比分预测帝 天津快乐十分