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 相关文章推荐
php 获取远程网页内容的函数
Sep 08 PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 PHP
PHP采集腾讯微博的实现代码
Jan 19 PHP
php生成百度sitemap站点地图类函数实例
Oct 17 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
twig模板获取全局变量的方法
Feb 05 PHP
Windows2003下php5.4安装配置教程(IIS)
Jun 30 PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
PHP session垃圾回收机制实例分析
Jun 28 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
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
js中this用法实例详解
2015/05/05 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
在Vue中使用HOC模式的实现
2020/08/23 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
Python中关于使用模块的基础知识
2015/05/24 Python
python使用opencv进行人脸识别
2017/04/07 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
Python实现弹球小游戏
2020/08/01 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
加拿大最大的书店:Indigo
2017/01/01 全球购物
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
大四学生思想汇报
2014/01/13 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
教师一岗双责责任书
2014/04/16 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
数学教师求职信范文
2015/03/20 职场文书
公司人事任命通知
2015/04/20 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python