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

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

Jun 07, 2016 am 11:42 AM

自己编写的简洁可扩展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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

了解Python编程的入门级代码示例 了解Python编程的入门级代码示例 Jan 04, 2024 am 10:50 AM

了解Python编程的入门级代码示例Python是一种简单易学,功能强大的编程语言。对于初学者来说,了解Python编程的入门级代码示例是非常重要的。本文将为您提供一些具体的代码示例,帮助您快速入门。打印HelloWorldprint("HelloWorld")这是Python中最简单的代码示例。print()函数用于将指定的内容输出

PHP 变量的实际应用:10 个实际使用示例 PHP 变量的实际应用:10 个实际使用示例 Feb 19, 2024 pm 03:00 PM

PHP变量存储程序运行期间的值,对于构建动态且交互式的WEB应用程序至关重要。本文将深入探讨php变量,并通过10个真实的示例展示它们的实际应用。1.存储用户输入$username=$_POST["username"];$passWord=$_POST["password"];此示例从表单提交中提取用户名和密码,并将其存储在变量中以供进一步处理。2.设置配置值$database_host="localhost";$database_username="username";$database_pa

Go语言编程实例:Web开发中的代码示例 Go语言编程实例:Web开发中的代码示例 Mar 04, 2024 pm 04:54 PM

《Go语言编程实例:Web开发中的代码示例》随着互联网的快速发展,Web开发已经成为各行业中必不可少的一部分。作为一门功能强大且性能优越的编程语言,Go语言在Web开发中越来越受到开发者们的青睐。本文将通过具体的代码示例,介绍如何利用Go语言进行Web开发,让读者能够更好地理解和运用Go语言来构建自己的Web应用。1.简单的HTTP服务器首先,让我们从一个

Java实现简单的冒泡排序代码 Java实现简单的冒泡排序代码 Jan 30, 2024 am 09:34 AM

Java冒泡排序最简单的代码示例冒泡排序是一种常见的排序算法,它的基本思想是通过相邻元素的比较和交换来将待排序序列逐步调整为有序序列。下面是一个简单的Java代码示例,演示了如何实现冒泡排序:publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

从入门到精通:Go语言中常用数据结构的代码实现 从入门到精通:Go语言中常用数据结构的代码实现 Mar 04, 2024 pm 03:09 PM

标题:从入门到精通:Go语言中常用数据结构的代码实现数据结构在编程中起着至关重要的作用,它是程序设计的基础。在Go语言中,有许多常用的数据结构,掌握这些数据结构的实现方式对于成为一名优秀的程序员至关重要。本文将介绍Go语言中常用的数据结构,并给出相应的代码示例,帮助读者从入门到精通这些数据结构。1.数组(Array)数组是一种基本的数据结构,是一组相同类型

如何使用PHP编写库存管理系统中的库存分仓管理功能代码 如何使用PHP编写库存管理系统中的库存分仓管理功能代码 Aug 06, 2023 pm 04:49 PM

如何使用PHP编写库存管理系统中的库存分仓管理功能代码库存管理是许多企业中不可或缺的一部分。对于拥有多个仓库的企业来说,库存分仓管理功能尤为重要。通过合理管理和跟踪库存,企业可以实现不同仓库之间的库存调拨,优化运营成本,改善协同效率。本文将介绍如何使用PHP编写库存分仓管理功能的代码,并为您提供相关的代码示例。一、建立数据库在开始编写库存分仓管理功能的代码之

指导与示例:学习Java选择排序算法的实现 指导与示例:学习Java选择排序算法的实现 Feb 18, 2024 am 10:52 AM

Java选择排序法代码编写指南及示例选择排序是一种简单直观的排序算法,其思想是每次从未排序的元素中选择最小(或最大)的元素进行交换,直到所有元素排序完成。本文将提供选择排序的代码编写指南,并附上具体的Java示例代码。算法原理选择排序的基本原理是将待排序数组分为已排序和未排序两部分,每次从未排序部分选择最小(或最大)的元素,将其放到已排序部分的末尾。重复上述

华为云边缘计算对接指南:Java代码示例快速实现接口 华为云边缘计算对接指南:Java代码示例快速实现接口 Jul 05, 2023 pm 09:57 PM

华为云边缘计算对接指南:Java代码示例快速实现接口随着物联网技术的快速发展和边缘计算的兴起,越来越多的企业开始关注边缘计算的应用。华为云提供了边缘计算服务,为企业提供了高可靠的计算资源和便捷的开发环境,使得边缘计算应用更加容易实现。本文将介绍如何通过Java代码快速实现华为云边缘计算的接口。首先,我们需要准备好开发环境。确保你已经安装了Java开发工具包(

See all articles