php skymvc 一款轻量、简单的php


Posted in PHP onJune 28, 2011

改框架主要用于实现多个程序员之间的协同开发以及mvc开发模式的实现.skymvc采用mvc开发方式,框架本身易扩展。skymvc作为天网计划的基础框架,秉承易用、易学、共同开发的优良传统,我们致力于打造一款优秀的php
mvc框架。欢迎大家多多提些建议。
1.创建配置文件skyMVC支持自动创建网站目录:输入http://locahost/skymvc/install.php 即可自动创建
文件目录。如果创建之后想重新创建,删除install.lock文件及可。
推荐自动创建。
也可以手动创建:目录都可以自定义
自定义目录时需要对程序进行相应的配置
admin 后台目录
admin/model
admin/ctrl
attach
上传的附件目录
ctrl 控制文件目录
data 目录
data/config.php
配置文件
data/cache 缓存目录
data/cache/css
css缓存
data/cache/file文件缓存
data/cache/tpl 模板缓存
data/cache/js
js缓存
model 模型文件目录
tpl 模板目录
tpl/admin 后台模板
tpl/default
默认模板
js目录
plugin 插件目录
admin.php 后台入口文件
index.php 前台入口文件
2.入口文件

skymvc采用单一入口模式,但不是唯一入口,推荐使用两个入口。一个是前台入口,一个是后台入口。
1.前台入口文件实例:index.php 文件名可以自定义 推荐 index 或者
default

<?php 
require 
"data/config.php";//加载配置文件 
require("skymvc/skymvc.php");//引用框架文件 
//判断控制器是否合法 
$_GET['m']=isset($_GET['m']) 
&& 
in_array($_GET['m'],array('index'))?$_GET['m']:'index'; 
//判断结束 
require_once(CTRL_DIR."/{$_GET['m']}.ctrl.php"); 
$classname 
= $_GET['m'].'Control'; 
$control = new 
$classname(); 
//配置伪静态的 
$control->tpl->rewrite=false; 
$control->tpl->rewrite_rule=array(array("/index.php/i"),array("index.html")); 
//配置伪静态结束 
$method=isset($_GET['a']) 
&& method_exists($control,'on'.$_GET['a'])? 
'on'.$_GET['a']:"onDefault"; 
$control->$method(); 
?>

2.后台入口文件:admin.php 文件名可自定义
<?php 
require 
"data/config.php"; 
require("skymvc/skymvc.php"); 
$_GET['m']=isset($_GET['m']) 
&& 
in_array($_GET['m'],array('index','article'))?$_GET['m']:'index'; 
require_once(ADMIN_DIR."/".CTRL_DIR."/{$_GET['m']}.ctrl.php"); 
$classname 
= $_GET['m'].'Control'; 
$control = new 
$classname(); 
//配置伪静态的 
$control->tpl->tplid="admin"; 
$control->tpl->currdir="admin"; 
$control->tpl->rewrite_on=true; 
$control->tpl->rewrite_rule=array(array("/index.php/","index.html")); 
$method=isset($_GET['a']) 
&& method_exists($control,'on'.$_GET['a'])? 
'on'.$_GET['a']:"onDefault"; 
$control->$method() 
?>

说明:前后台入口文件的差别不大,主要在于 模型 和 控制文件 所在文件夹。
3.控制器文件
<?php 
class indexControl extends skymvc 
{ 
function 
__construct() 
{ 
$this->indexControl(); 
} function 
indexControl() 
{ 
parent::__construct();//父类初始化 
$this->loadModel("index"); 
//后台 
//$this->loadAdminModel("index"); 
} 
function 
onDefault() 
{ 
$this->tpl->assign("welcome","欢迎使用skymvc,让我们共同努力!"); 
$this->tpl->assign("who",$_ENV['indexModel']->test()); 
//后台 
//$this->tpl->assign("who",$_ENV['admin_indexModel']->test()); 
$this->tpl->display("index"); 
} 
?>

4.模型文件
模型文件主要用于处理数据,当然也可以处理其他的逻辑,但不推荐。文件命名规范:类.model.php
如:index.model.php.
模型文件位于模型目录下面:如model目录
例:index.model.php
<?php 
class 
indexModel 
{ 
public $base; 
function 
__construct(&$base) 
{ 
$this->indexModel($base); 
} 
function 
indexModel(&$base) 
{ 
$this->base=$base; 
$this->db=$base->db; 
} 
function 
test() 
{ 
echo "这是模型测试"; 
} } 
?>

模型文件:前后台一样 就存储的地方不一样
5.hello world
kymvc框架的hello word !
如果是自动创建目录的话。
配置好数据库
index.php
入口文件写好。
index.php内容
<?php 
require 
"data/config.php";//加载配置文件 
require("skymvc/skymvc.php");//引用框架文件 
//判断控制器是否合法 
$_GET['m']=isset($_GET['m']) 
&& 
in_array($_GET['m'],array('index','article'))?$_GET['m']:'index';//将所有在index.php入口出现的模块都放入array()里 
//判断结束 
require_once(CTRL_DIR."/{$_GET['m']}.ctrl.php"); 
$classname 
= $_GET['m'].'Control'; 
$control = new 
$classname(); 
$method=isset($_GET['a']) && 
method_exists($control,'on'.$_GET['a'])? 
'on'.$_GET['a']:"onDefault"; 
$control->$method();?>

在ctrl目录下 创建
hello.ctrl.php 文件
<?php//hellControl 类得命名规范 类名Control 
class 
helloControl extends skymvc 
{ function __construct() 
{ 
$this->helloControl(); 
} 
function 
helloControl() 
{ 
parent::__construct(); 
$this->loadModel("hello");//载入模型 
可以载入任何模型 但不能是相同类的模型 
} 
//默认执行的动作 命名规范 on函数名 
function 
onDefault() 
{ 
echo "hello world 
"; $this->smarty->display("hello.html"); 
} 
//当m=hello, a=test 
执行下面的函数 
function 
onTest(){ 
$this->tpl->assign("test",$_ENV['helloModel']->gettest()); 
$this->tpl->display("hello.html"); 
} 
}?>

在model目录下
创建hello.model.php
<?php 
class helloModel 
{ 
public 
$base; 
function 
__construct(&$base) 
{ 
$this->helloModel($base); 
} function 
helloModel(&$base) 
{ 
$this->base=$base; 
$this->db=$base->$db; 
} 
//上面都是不用改的 
function gettest(){ 
return $this->db->getRow("select * from test 
limit 1");//读取数据 
} 
} 
?>

在tpl目录下 新建 hello.html
<!DOCTYPE html 
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" 
content="text/html; charset=gb2312" 
/> 
<title>无标题文档</title> 
</head> 
<body> 
这是第一个例子:Hello World ! 
这是测试的例子:{loop $test $t} {$t} 
{/loop} 
</body> 
</html>

skymvc 下载地址
PHP 相关文章推荐
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
Discuz板块横排显示图片的实现方法
May 28 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
Jul 01 PHP
PHP中echo,print_r与var_dump区别分析
Sep 29 PHP
thinkphp模板的包含与渲染实例分析
Nov 26 PHP
php取得字符串首字母的方法
Mar 25 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
Apr 19 PHP
php中的异常和错误浅析
May 03 PHP
Laravel登录失败次数限制的实现方法
Aug 26 PHP
关于php mvc开发模式的感想
Jun 28 #PHP
yii框架源码分析之创建controller代码
Jun 28 #PHP
关于PHP中Object对象的笔记分享
Jun 28 #PHP
php dirname(__FILE__) 获取当前文件的绝对路径
Jun 28 #PHP
php新建文件自动编号的思路与实现
Jun 27 #PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 #PHP
php开启安全模式后禁用的函数集合
Jun 26 #PHP
You might like
关于页面优化和伪静态
2009/10/11 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
javascript编码的几个方法详细介绍
2013/01/06 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
英国家用电器购物网站:Hughes
2018/02/23 全球购物
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
信息技术国培研修日志
2015/11/13 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python