>php教程 >php手册 >自制简易php的mvc框架仅供学习参考

自制简易php的mvc框架仅供学习参考

WBOY
WBOY원래의
2016-06-07 11:42:26965검색

自己编写的简洁可扩展MVC的php框架(出于安全考虑仅仅支持php 5.3.9及以上版本,文件编码仅仅支持utf8)
有需要下载csdn、pudn、51cto资源的,可以到www.itziy.com下载
代码迁移到google code上,最新的框架代码您可以从svn获取它,
项目地址:http://code.google.com/p/rain-php-framework/
具体的更新内容,您可以从项目地址中获得相关说明信息

注意:后期所有的更新体现都在上述的项目地址中,此处不再更新任何内容
求一份PHP工作晚上,有意请联系本人563268276
后期更新可能都只是同步到google code的svn,为了获得最新版本,请用svn下载它,地址如下
http://rain-php-framework.googlecode.com/svn/trunk
自己编写的简洁可扩展MVC的php框架(出于安全考虑仅仅支持php 5.3.9及以上版本,文件编码仅仅支持utf8)
免积分下载csdn资源、pudn资源、51cto资源,尽在http://www.itziy.com

代码迁移到google code上,最新的框架代码您可以从svn获取它,
项目地址:http://code.google.com/p/rain-php-framework/
具体的更新内容,您可以从项目地址中获得相关说明信息
性能查看
自制简易php的mvc框架仅供学习参考

注意:后期所有的更新体现都在上述的项目地址中,此处不再更新任何内容

地址如下
http://rain-php-framework.googlecode.com/svn/trunk/
linux环境下svn获取代码方式,安装svn客户端后,命令行通过下面方式获取
svn co http://rain-php-framework.googlecode.com/svn/trunk/ web


系统要求:适用于window、linux系统平台

编写初衷:原先想用thinkphp框架,后来经过阅读thinkphp代码,发现一个ip获取的欺骗bug以及非常严重的PDO封装还有漏洞,有可能导致注入的BUG,所以决定自己写框架系统,从最简单的方式开始,最基础架构先出来,后期会根据自己业务需求,封装扩展更多的类库及方法。

有关thinkphp的类库的bug,是3.2版本的bug,3.2.1官方根据我的提示,修复了bug,详见
http://www.thinkphp.cn/topic/10965.html 我和thinkphp官方讨论对话文章

框架宗旨:我一直觉得框架没有大小、好坏之分,适用才是关键,不同的场合可能不要不同的技术支持。编写这个框架主要是为了自己用,也同时为了跟大家一起分享学习。框架核心一点是安全,甚至可以因为安全性的要求牺牲一点框架性能。其次是根据需要的可扩展性,再其次是高效性,尽量减少不必要的类库加载。

基本的框架已经实现:
1.日志记录的类,觉得为了安全考虑还是不封装了,避免日志泄漏了web路径等之类的问题,可以根据自身需要进行扩展类库。

2.model的class觉得封装了增加复杂度,sql直接操作更加方便快捷,不用类似其他框架的什么limit()/where()/join()这些方法感觉太累赘。

3.语言库支持可以根据自己需要扩展,反正我目前不需要也不准备封装。 总的来说,现在这个已经满足自己开发基础需求,后期功能可能就直接更新应用到自己项目了,不再公开发布代码库文件了

------------------------------------------------------------------------
2014-02-27 更新说明
--------------------------------------------------------------------
1.增加上传类库Upload类,方便文件上传操作

2.增加分页类库Page类,方便分页操作

---------------------------------------------------------------------
2014-02-25 更新说明
------------------------------------------------------------------------
1.对session做了处理,支持memcache的扩展的服务器,默认session存储在memcache中提升效率


2.扩展图片操作类库,支持获取验证码、验证码校验(不区分大小写)、图片加水印(图片水印或者文字水印)、图片等比放大或缩小,均支持gif、png或jpg扩展名格式

-------------------------------------------------------------
2014-02-24 更新说明
-------------------------------------------------------------
更新对于所有的表单的post请求,增加了令牌token验证支持,可以用常量OPEN_TOKEN设置是否开启令牌校验
HIDDEN_TOKEN_NAME常量设定令牌校验名称
action中使用$this->open_token = true或者$this->open_token = false设置针对性action方法是否开启令牌校验


-------------------------------------------------------------
2014-02-22 12:55:34 更新说明
-------------------------------------------------------------
更新由于疏忽if的模板中少了else if和else的问题,即增加了else if和else的模板的支持
-------------------------------------------------------------
2014-02-22 更新说明
-------------------------------------------------------------
1.修复url rewrite 没有添加action字符串
2.修复安全模式下server遇到array处理报错问题
3.在自制的模板引擎中,除了 之外增加include的支持,为代码模板公用提供了方便,提供两种实现方式,例子如
这里的action是Index,对应的action的方法method是test,而且模板也是test.html
这里的action是Index,对应的action的方法method是test,而且模板是test_view.html

-------------------------------------------------------------
2014-02-20 更新说明
-------------------------------------------------------------
1.修复了在关闭debug模式后,如果出现notice或者waring的情况的时候激发报错的提示问题

2.为了方便日后业务开发需求,增加Cache缓存类,支持文件缓存和memcache缓存,操作完全统一,通过get、set、rm等操作统一操作memcache或者文件缓存

1.mysql操作方面使用pdo方式,摒弃以往的mysql_connect或者mysqli_connect,完全杜绝了SQL注入的可能性

2.简单快捷使用正则方式实现模板引擎,支持if、foreach、loop、直接赋值的模板操作

3.高效、快捷、可扩展,可以根据自身需要任意扩展类库,目前类库仅仅实现mysql的操作(PDO方式封装),可以根据需要扩展gd操作、文件操作、session操作、缓存等相关类库

4.全面支持MVC模式,类库、方法、函数自动加载机制

5.全面支持url rewrite的伪静态模式

6.出于安全考虑,封装了安全模式过滤函数,可以根据需要自己设定是否开启安全模式

7.2014-02-22更新的版本中增加了Cache缓存类,支持memcache和文件缓存两种模式,同时为了更好的代码复用,模板引擎在原有的基础上扩展了include公共模块的支持

温馨提示:如果大家需要下载csdn资源、pudn资源、51cto资源,可以到www.itziy.com/下载

-------------------------------------------------------------
2014-02-22 框架使用简单介绍
-------------------------------------------------------------
1.框架总体分为MVC的模式,下载后直接访问http://www.xxx.com/就可以自动生成相应的MVC架构。当然是否生成demo是根据CREATE_DEMO常量进行控制的,相关的其他常量请详见framework/Framework.php里面的代码

2.支持控制过滤$_POST/$_GET/$_REQUEST/$_SERVER/$_COOKIE变量参数和值的安全模式

3.framework/Common/functions.php定义了常用的函数,包括如下的一些,详见代码
getIp 获取ip地址
setc、getc、delc对于cookie的读、写、删操作
mkdirs、rm文件夹的创建和删除,支持批量创建和删除
send_http_status http状态头信息发送
C 读取配置文件
safe 安全模式过滤函数
build 生成框架例子的文件夹函数
echo_memory_usage 框架内存使用格式化输出函数
import 导入文件函数,主要用于记录框架引用的文件个数
debuginfo 调试信息输出函数
load_functions 自动加载自定义的系统函数库文件以及用户自定义的函数库文件
my_autoload 实现自动加载类库文件
U 对需要格式化的url进行格式化返回。格式如U(控制器名称/方法名称, array('参数key' => '参数value', '参数key2' => '参数value2')) example U('User/login', array('un' => 'zs', 'pw' => '123456'))
location 自动跳转函数,支持定义跳转的时间、消息内容,跳转地址
load_tpl 自动加载模板函数
compress_html 编译压缩html代码
shutdown_function 捕获php异常处理函数(包括die、exit、或者致命错误导致程序终止的)

framework/Class/Action.php
简易实现了action操作公用的设置变量到模板的set方法和最终渲染模板的display方法,可以根据自行需要进行扩展,所有其他action都应该继承自这个action
framework/Class/Application.php
初始化框架、包括加载相关的函数库、建立框架所需的相应文件夹等,根据需要启动安全模式进行对$_POST/$_GET/$_REQUEST/$_SERVER/$_COOKIE变量参数和值的安全检查和过滤,解析url,利用web服务的url rewrite机制进行伪静态url处理,并且设置好相应的action、method、template并且调用action的相应方法,转交控制权
framework/Class/Cache.php
实现了缓存控制、包括文件、内存缓存的统一方法、get、set、rm等操作

framework/Class/Demo.php
主要用于生成框架例子

framework/Class/Model.php
一个空的实现,您可以根据需要增加类似简化sql操作的方法实现,所有model继承此类

framework/Class/Mysql.php
利用单利模式构造的一个mysql操作类库,使用pdo方式封装彻底避免sql注入问题,其中关键是下面这个方法实现
query($sql, $data = array(), $one = false)
进行sql的值绑定方式,如果遇到insert自动返回最后插入的id值,如果是其他select操作根据需要返回一条或者全部记录数。

framework/Class/config.php
框架默认的配置文件,可以根究修改常量,重新自定义读取配置文件的位置

模板引擎说明
框架使用的模板引擎只是简单的一些正则替换、支持模板编译缓存,目前支持如下的一些模板引擎标记,包括if操作、直接赋值操作、foreach操作、loop操作、include操作,具体说明如下
直接赋值:通过在action方法中的set进行赋值到模板$this->set('val', 'hello world'),然后模板中使用
if 操作:

test if

foreach / loop 操作






include操作,支持两种方式,一直是template名称和method名称一样,另一种不一样,说明如下
这里的action是Index,对应的action的方法method是test,而且模板也是test.html
这里的action是Index,对应的action的方法method是test,而且模板是test_view.html

其他注意事项
1.如果使用mysql类库pdo会自动判断php版本
2.必须开启apache或者nginx的url rewrite模式
有其他使用问题,欢迎联系我,qq:563268276,共同学习探讨

附件 rain_php_mvc_framework2014-03-04最新版本.zip ( 285.28 KB 下载:210 次 )

AD:真正免费,域名+虚机+企业邮箱=0元

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.