使用php开发自己的MVC模式构架

所需积分/C币:9 2013-12-09 10:10:43 159KB PDF
收藏 收藏
举报

本例讲解了用MVC开发的一个小例子 希望能帮到大家
用来控制ur1=/test/Bad来的访问 水 class BadControler *控制类的调用方法,唯一的报漏给外部的接口 水/ function control( echothis is from GoodControler url==k*xk*pe-4*/test/Bad 文件4:( Appl ication.php) K?ph / k Application. php 水 用来实现网站的统一入口,调用 Controler类 class Application( //用来记录所要进行的操作 var Saction // controler文件的路径名 var controlerfile // controler的类名 var ScontrolerClass function Application([ function parse (I Sthis-> parsePatho Sthis> getControlerFile o Sthis-> getControlerClassname O *解析当前的访问路径,得到要进行动作 function parsePathO list(Spath, param)= explode("?",$ SERVER[ REQUEST URI Spos strrpos(path,/") Sthis >action= substr(Spath, Spost1) 米通过动作$ action,解析得到该$ action要用到的 controler文件的路径 function getControlerFileo Sthis->controlerFile-./Controler/".Sthis-action. Controler if(I file exists(Sthis->controlerFile)) die(" Controler文件名(". Sthis-> controlerfilo.")解析错误") require once Sthis->controlerFile 水通过动作$ action,解析得到该$ action要用到的 controler类名 function get ControlerClassname O Sthis->controlerClass= this->action.Controler if(!class exists(Sthis->controlerClass)) die(" Controler类名(".$this-> controlerclass.")解析错误") 米调用 controler,执行 controler的动作 function go ( Sc- new sthis->controlerClass o Sc->control( 用PHP开始你的MvC(二)抽象数据库接口 文章整哩:朱英文章来溟:刚络 抽象数据库接口(利用效据操作管理类) 在用mvc模式开发的时候,mode层负责数据库的所有操作,为了对数据库的操作进行统一的管理,我们 需要定义一个数据库操作管理类,由他来接替所有的数据库操作,乜就是整个系统中只有这个数据库操作 管理类,可以直接对数据库进行操作,如果其他的类需要对数据厍进行操作,那它就必须调用和通过这个 类米实现。 下面的Db类就是一个这样的类 水水冰水水水水水冰水水米水水水水水水水水水水水水水水水水水水水水水水水水水水水水本水冰水水水水水水水水水冰水 descript: mysql数据库操作管理类 example1:获取序 ? k Sdb= new Dbo 水 Result=Sdb>getSeq(' art id', 2 example2:分页查询 水 * * Sdb- new Db o k result= sdb->&queryPage(' select id, name from table, 2, 10 DB FETCH ASSOC) foreach(Result as Srow 水 echo$row[’id 55 row name 半/ 水 example3:插入数据 ? * *Sdb- new Dbo : result= sdb->execute("insert into table (id, name values (1 name if($ result>0)echo’'插入数据成功’; 水 else echo’插入数据失败 / *定义数据库联接选项 米@ var DB HOSt string数据库主机名称或地址 ck var DB NAME string数据库名称 *var DB USER string数据厍用户名称 * var DB PWD string数据库用户的密码 *@ var DB connect boolean是否建立持久连接 define('' DB HOST'’,’’ localhost'’) define( DB name test’); define(' DB USER',’root’) define(' DB PWD,’ detine('DB PCONNECT',) true) 定义返回数据查询结果的类型 @ var DB FETCH ASS0 )C int结果调用方式:$ result['name’' @ var DB FETCH NUM int结果调用方式:$ result[0 水@ var DB FETCh BOTI int结果调用方式:$ result['name’’]或 Result[oj @ var DB FETCH OBJECT int结果调用方式:$resu1t->name define(' DB FEtcH Assoc, 0) define('' DB FETCII NUM, 1) define( DB FEtCH both, 2) define( DB FETCH OBJECT'', 3) *定义默认序列发生器的名称 水 define(' DB SEQLENCE_ TABLENAME’,'’ sequences’) class Db i 当前数据库联接选项 var SubHost= DB HOST var SdbName= DB NAME ar dbType= Mysql var AbuSer- DB USER var dbPwd= DB PWD var penn= DB PCONNECT 水当前数据库连接 var scnn 数据查询结果的返回类型 var SqueryFetchType-DB FETCH ASSOC 水初始化函数 function DbO( Sthis-cnn=(Sthis->penn? my sql connect(S this->dbHost Sthis->dbUser, Sthis->dbPwd mysql connec t(sthis->dbHost, Sthis->dbUser, Sthis->dbPwd)) or sthis-) halt 数据库连接错误); mysql select db(Sthis->db Name, Sthis->cnn) or Sthis-> halt( 数据库选择错误’’) *数据查询函数 水@ paraM$sql string薮据查询语句 @ param$ fetchType int数据查询结果的返回类型 水@ return array数据查询结果 [unction &query(Ssgl, SfetchType-DB FETCH ASSOC)[ Sdata- array o $rs=& mysql query($sq1,$this>cn)or$this>halt(’数据查 询错误’,$sq1) Sexe=Sthis-> getCommand(S fetchType) while(row=&Sexe (Srs)) $data□]=&8 row return data 分页数据查询函数 水@ param$sq1 string数据查询语句 水@ paraIn$page int 当前预耷询页码 半@ param$ pageSize int每页显示多少条纪录 水@ param$ fetchType int数据查询结果的返回类型 数据查询结果,以及数据的分页信息 米@ return array(' pages∠e 〉每页显示的条数 recordCount=〉总纪录数 pageCount 〉总页数 page 〉当前页码 isFirst 是否第一页 ⊥SLas 是否最后一页 start 〉返回结果的第一条纪录的序号 sq 查询的sq1语句 〉查询得到的数据结果 数据查询结果,以及数据的分页信息 function &queryPage (Ssql, page=1, pageSize=20 SfetchType=DB FETCH ASSOC) counts1- preg replace(’| SELECT.*FROM1”’,’ SELECT COUNT(*) count FROM, $sql) Sdatal' pagesize',]-(int) Size<? 20: (int)pagesIze $data’ recordCount’]=$this- getOne($ counts1,’' count”) Sdata page Count’]= ceil(sdatal' recordCount/data[ pageSize) Sdatal'' page',]=Sdatal'' page Count']==0? 0:((int)spage(1? 1 (int)spage ata, s data l'page'’]=$data'page'’]> atal page Count’]? Sdat I'' page Count'']: Sdatal'' page''J data’ isFirst,’]-$data['page'’]>1? false:true; $data' isLas’’]=$data['page’]<$data[' page Count’] Talse: true Sdatal'start''-(Sdatal'' page]=0 ($data['page’]-1)米$data[’ pagesize’] data[’sq1’]-Ssq1.’ LIMIT .($data[' start’]-1).’,”’.$data[’ pagesize data['' data'’]=&$this-> query($data["’sq1’],$ fetchType) return data 进行数据查询只返回第1行的数据 k Param sql string数据查询语句 水@ param SfetchType int数据查询结果的返回类型 k Return array数据查询结果 function &queryRow(Ssql, SfetchType-DB FETCH ASSOC)( rs=& mysql query($sq1,$this->cnn)or$this->halt(’单行数 据查询错误’,$sq1); Sexe= sthis-> getCommand (SfetchType) return exe(irs 进行数据询只返回第1行第n列的数据 水@ param$sq1 string数据查询语句 Param Sfield int 返回数据列的名称或数字序号 米@ return string返回单个字段的值 function &getOne(Ssql, field=0)I rs=&mysq1 query($sq1,$this->cmn)or$this->halt(’单个数 据查询错误”,$sq1); Row= mysql fetch array(Srs return SrowlSfieldI *进行sq1语句,包含 DELECT/ INSERT/ UPDATE.的执行语句 水@ paraM$sql string薮据查询语句 冰@ return string返回该语句影响的数据行数 function execute(Ssql)( srs= mysql query($sql)or$this-〉hat(’语句执行错误’ sq return mysql affected rows(Sthis>cnn 得到最后一次插入数据的编号 function getInsertIdo I return mysql insert id(this->cnn) *序列发生器,用来生成不重复的序列值 水 米@ paraIn$ fieldName string序列的名称 米@ param$step int 序列号间隔 米@ param$ start int序列号的起始数值 Return Int 新的序列值 function getSeq(fieldnAme, Step=1, Sstart=1)I Stable- DB SEQUENCE TABLENAME Sstep-(int)step Sstart =(int)sstart; Srs= mysql query("UPDAtE Stable SET sey numFseg num+(Step) WHERE seg name= FieldnAme) if(Srs mysql affected rows(Sthis-)cnn)1)( Srs- mysql query( SELECT FROM. DB SEQUENCE TABLENAME Sthis->cnn) f(!$rs){ Ssql=CREATE TABLE Stable seq name VARCHAR( 20) NOT NULL seg num BIGINT( 20) DEFAULT 1 NOT NULL PRIMARY KEY (seq name)) rs= mysql query(Ssq1)or$this->halt('创建序列发生 器表失败”,$sq1) Srs= mysql query(" INSERT INTO Stabl VALLES('SficldName', start)")or $this-〉halt(’添加新序列错误’,$sq1) Sseg- Ssti e se sseg=&Sthis >getOne( SELECT seg num FROM Stable WIIERE seg name- FieldnAme) return se function get Command (SfetchType)[ switch(SfetchType)( case DB FETCH ASSOC: exe= mysql fetch assoc', break case DB FETCII NUM: Sexe =my sql fetch row, break case DB FETCH BOTH: Sexe mysql fetch array, break case DB FETCH OBJECT: exe= mysql fetch object; break default:$exe=’ mysql fetch array’’; break return Sexe function halt(Smsg) SerrO= mysql errno(Sthis >cnn) SerrStr- mysql error(this->cnn die("数据库错误:$msg<br>$ errNo:$ error") ?> 点击这里进入对应文章地址L进入主站」 用PHP开始你的MC(三)实现你的Mode层 文章整理:朱英文章来源:网终

...展开详情
试读 30P 使用php开发自己的MVC模式构架
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    • 签到新秀

      累计签到获取,不积跬步,无以至千里,继续坚持!
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    使用php开发自己的MVC模式构架 9积分/C币 立即下载
    1/30
    使用php开发自己的MVC模式构架第1页
    使用php开发自己的MVC模式构架第2页
    使用php开发自己的MVC模式构架第3页
    使用php开发自己的MVC模式构架第4页
    使用php开发自己的MVC模式构架第5页
    使用php开发自己的MVC模式构架第6页
    使用php开发自己的MVC模式构架第7页
    使用php开发自己的MVC模式构架第8页
    使用php开发自己的MVC模式构架第9页

    试读已结束,剩余21页未读...

    9积分/C币 立即下载 >