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 相关文章推荐
ThinkPHP与PHPExcel冲突解决方法
Aug 08 PHP
PHP中copy on write写时复制机制介绍
May 13 PHP
php中call_user_func函数使用注意事项
Nov 21 PHP
php判断表是否存在的方法
Jun 18 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
php中namespace及use用法分析
Dec 06 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 PHP
open_basedir restriction in effect. 原因与解决方法
Mar 14 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
新手学习PHP的一些基础知识分享
2011/07/27 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
PHP实现的json类实例
2015/07/28 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
最短的IE判断代码
2011/03/13 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
浅析Python中的多进程与多线程的使用
2015/04/07 Python
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Flask之flask-script模块使用
2018/07/26 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
python名片管理系统开发
2020/06/18 Python
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
简历中个人自我评价范文
2013/12/26 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
教师反腐倡廉演讲稿
2014/09/03 职场文书
财务个人年度总结范文
2015/02/26 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
德生BCL3000抢先使用感受和评价
2022/04/07 无线电