自己编写基于MVC的轻量级PHP框架.doc_第1页
自己编写基于MVC的轻量级PHP框架.doc_第2页
自己编写基于MVC的轻量级PHP框架.doc_第3页
自己编写基于MVC的轻量级PHP框架.doc_第4页
自己编写基于MVC的轻量级PHP框架.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自己编写基于MVC的轻量级PHP框架做WEB开发已有一年,每次都写重复的东西, 因此,想自己写一下框架,以后开发方便.本人之前学习asp.NET两年,JSP半年,可是后来因为工作的原故换成PHP.其实很不喜欢PHP的语法.还有PHP的函数名,每回都忘记.还是喜欢C#和JAVA的语法,哈.不过PHP有PHP的优点,不像ASP.NET那样封装了大量的东西,PHP更简单,更自由吧.还有应该就是PHP的开源组合. 写这编文章主要是因为那些东西要写给别人看,顺便发表了.高手看了别笑,菜鸟自己注意辨别,别被我的错误观点误导.文章中的代码下载一.文件结构index.php 入口文件 class 类存放的文件夹 base.class.php 基类 error.class.php 错误处理类 parms.class.php 获取参数类 control.class.php 控制类 model.class.php 模型类 template smartTemplate 类存放文件夹 db adodb 类存放文件夹 includes 包含文件类defines.inc.php 定义各路径文件 frameword.inc.php 框架处理文件 router.inc.php 路由文件,跟据参数,跳转不同路径 models 模式存放路径 views 模版文件保存路径 controls 存放控制类的文件夹 config.php 配置文件 admin 后台二.简单类图三. 入口文件,index.phpGet(a);/参数的获取GET方法request-Post(a);/获取POST参数?四. 路径定义文件 defines.inc.php五. 框架文件路径 frameword.inc.phpflibrary(demo);/调用demo类的Get函数则为 demo-Get(参数);request=load-library(params);/不同的目录用不同的URL方式require_once( PATH_BASE.DS.includes.DS.router.inc.php );?六. 基类函数包含了常用的功能 base.class.phppath_root =PATH_ROOT;this-path_class =PATH_CLASS;this-path_control=PATH_BASE.DS.controls;/加载模型/load modelfunction model(name) include_once (this-path_model.DS.name.php);model=null;if(model=null)model=new name();return model;/output page/*paramater name file name*paramater data replace*/function view(name,data) Template=self:template(file);Template-output(data);unset(Template);/create database connectionfunction database()include_once (PATH_CLASS.DS.db.DS.adodb.inc.php);this-db = ADONewConnection();this-db-createdatabase = true;result = this-db-Connect(self:config(db_host) , self:config(db_user), self:config(db_password), self:config(db_database) );if(!result)die(Could not connect to the database.);elsethis-db-Execute(set names utf8);return this-db;/create template function template(file)include_once (PATH_CLASS.DS.template.DS.class.smarttemplate.php);Template = new Smarttemplate(file);Template-template_dir=PATH_BASE.self:config(template_dir);Template-cache_dir =PATH_BASE.self:config(cache_dir);return Template;/import class function library(className) if(empty(className)return null;exit();elserequire_once(PATH_CLASS.DS.className.class.php);return new className();/return config valuefunction config(parameter)require_once(PATH_CONFIG.DS.config.php);return CONFIG:Ini()-parameter;?七. 控制器父类control.class.phprequest=this-library(params);/output page/*paramater name file name*paramater data replace*/function view(name,data=) Template=this-template(name.html);Template-assign(site_root,this-config(site_root);Template-assign(data);Template-output();unset(Template);/load modelfunction model(name) include_once (PATH_BASE.DS.models.DS.name.php);if(this-model=null)this-model=new name();return this-model;?八. 模型父类 model.class.phprequest=this-library(params);/create database connectionfunction database()if(this-db!=null)return this-db;exit;include_once (PATH_CLASS.DS.db.DS.adodb.inc.php);this-db = ADONewConnection();this-db-createdatabase = true;result = this-db-Connect(this-config(db_host) , this-config(db_user), this-config(db_password), this-config(db_database) );if(!result)die(Could not connect to the database.);elsethis-db-Execute(set names utf8);return this-db;?九. 路由文件, router.inc.php跟据URL,指定到相应的控制器,跟据网站的URL表现形式编写library(params);/获取参数option=request-get(option);task =request-get(task);/如果未设置文件if(empty(option)option=load-config(index_router);include_once (PATH_BASE.DS.controls.DS.option.php);Control=new option();if(empty(task)Control-index();elseControl-task();?十,使用方法使用方法.视图V:在把模板文件放在VIEW文件夹里面.命名方式为,login.html控制C:把要怎么处理的文件放在control文件夹里面,格式为.demo.php class demo extends Controlfunction edit()data=this-user-issuer();/调用模型this-view(login,data);/这个LOGIN为视图中的login.html文件模型 M:把文件放在 model文件夹里面.格式为.user.phpclass user extends Modelfunction issuer()数据库或底层的操作,返回结果自定义类的调用,把类放在Class文件夹下面.格式为session.class.php先实例化.session=load-library(session);然后再调用类中的函数session-sessionId();例子:如下URL: /com/admin/?option=test&task=getUser (注:这里的URL格式可以在router.inc.php里面修改.同时为了让不同目录的地址格式不一样,比如前台和后台,因些,把router.inc.php规则放在了入口文件的includes目录下面) 则会调用/admin/control/文件夹下面的test.php文件test类的getUser 函数,如果task参数为空,则调用index函数.文件:/admin/control/test.phpmodel(member)-getUser();this-view(test,data); function reg()if(this-model(member)-isUser()this-Alert(用户名已存在); /error类中定义了elsethis-model(member)-addUser();?如果this-model(member)这个模型经常用到,可以在引用类的构造函数中初始化,不要每次都实例化.如:Var member;function test()this-member=this-model(member);这样,应用的时候只要. this-member -addUser();this-model(member)-getUser();为调用入口文件相应目录下的Models 文件夹下面的member.php文件里面的getUser();函数文件:/admin/models/member.phpdb-GetOne(select username from user where userId=1);/这种方式处理数据库/this-request-Get(test) /this-request-Post(test) 这种方式获取参数,在父类中已定义 return admin; /验证用户名是否已经存在function isUser()userName=this-request-Post(username)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论