




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DBFQ SYY卓越SEO优化团队(WWW.268SEO.COM),提供全国地区企业建站,企业优化排名 企业外包,网站优化,网站SEO优化排名提升,外链建设,外链代发,提供建站,维护,推广等一体化服务,价格低,服务好,诚邀广大企业主站长合作 DBFQ SYYFleaphp入门教程教程提要1. 前期准备l Phpl Smartyl 设计模式2. 程序初始化l 项目目录安排l Config 文件的设置l Index.php(入口文件的初始化)3. url的格式l url基本格式l smarty中url函数的使用4. 目录的命名规则l 类的使命名规则5. 控制器l 控制的定义l 控制器的编写6. MODELl MODEL的定义l MODEL的编写7. 控件器与MODEL的关系8. fleaphp数据库操作l 数据库的四种关系l 数据库四种关系的编写l 数据库的增删改l 数据操作的实例9. 载入助手文件10. 综合例子代码11. fleaphp一些常用的APIl ridirectl url前期准备一php熟悉PHP,熟悉OOP编程模式,资料可看精通PHP+MYSQL应用开发二SmartyFleaphp中有很多形式实现表现层(VIEW),本教程使用smarty来渲染表现层,原因有三个:1.方便开发的协同,2.数据处理与界面分离.3.利用smarty的cache在学习FLEAphp之前请了解一下smarty,最好的教程是(该教程在附件)三设计模式设计模式有很多种(想了解更多,可以到图书馆借本设计模式来看)fleaphp主要用到MVC三层设计模式:M(数据逻辑层)就是代表数据处理,比如数据库的操作,数据验证;V(表现层)就是显示给用户的那一面,在WEB程序开发中就是HTML;C(控制层)负责响应用户的请求.当一个用户在浏览器上点击了一个按钮或者链接,C层就响应,然后通知M哪里发生事件,M为该事件执行一些动作(提取数据,删除数据,过滤等等)然后M就把数据传送回给C,C再调用对应的V,V再把数据翻译成HTML送给浏览器显示,这就是MVC的工作过程程序初始化一 项目目录安排1.主目录安排与介绍Lib是fleaphp的核心文件库,一般我们都不会修改这里面的文件,你能力很强可以修改核心文件增加功能或者修改功能Lib里面的目录FLEA是FLEAPHP的文件库,smarty是smarty的核心文件,使fleaphp支持SmartyFLEA里面目录这里主要介绍两个文件FLEA.php与FLEA,FLEA目录是我们的项目中要引入的目录,FLEA.php是初始化文件 App是我们项目文件所在,我们编写的文件就放在这里面,教程实例的一些文件就放置在这里面pp里面的目录dmin放置后台文件,实例教程中没有用到ront是放置前台文件,的功能就在这里面实现Share是放置一些前后台共享的文件,比如数据库类,助手文件,本教程力求简单,所以不在讨论范围Front里面目录安排Config放置项目初始化文件Controller放置控制器文件Helper放置助手文件,也就是一些事先写好的函数,类文件操作Model放置逻辑文件,对应着controllerTable放置数据库对象文件,它们的编写在下面有讲images文件放置项目的图片文件js放置项目的javascript文件style放置项目的CSS文件templates放置项目的模板文件templates_c smarty的缓存文件,不用理这个目录index.php项目入口文件,载入项目初始化设置二 Config文件设置这个文件主要设置数据库的连接信息,当然你也可以把一些项目中所需的常用数据放置在这个文件里面然后再在需要用到的地方提取数据就OK了,下面是BBS项目的初始化设置(如果想深入了解可以查看fleaphp内核的config目录下面的文件)而app里面的config文件是覆盖内核中的config文件相同的变量值,这个文件返回的是一个数组 dirname(_FILE_).DS.Cache,/设置缓存文件放置的目录 view = FLEA_View_Smarty,/使用的表现层的方法,这里面设置了smarty pageSize = 2,/自定义变量 viewConfig = array(/smarty的相关设置 smartyDir = LIB./Smarty,/smarty的核心文件 template_dir = Templates, compile_dir = Templates_c, left_delimiter = , right_delimiter = , ), dbDSN = array(/数据库的链接信息driver = mysql,host =localhost,database = flea,login = root,password = ),homepageNum=10,/自定义数据hotNum=10,/自定义数据);?可以通过fleaphp中的api getAppInf函数来获取初始文件中的变量值三 Index.php(入口文件的设置)这个入口文件是根据项目目录安排设置的url的格式一 url基本格式?号后面是我们自定义的字符串controller就是控制器,action就是控制器的动作,id是传递过来的参数,基本上所有的url都得这么编写.如果每遇到一个链接都这么写很累吧,幸运的是fleaphp提供了url函数,在模板中用的很自如二 模板中的url函数url controller=passage action=listall id=1 qq1=3 qq2=4 qq3=5 qqi=i(0i无穷大)这样smarty中就自动帮我们生成url格式了,前面的两个参数可以说不可缺少,后面的一大串参数,你可以根据需求添加,添加多少随你的应用程序了(总的url不能大于2K)国际规定目录的命名规则一 类的命名规则所有 FleaPHP 自带的类,都以FLEA_ 开头。然后根据用途命名。例如 FLEA_Controller_Action、FLEA_Helper_ImgCode。然后将类名字中的“_”替换为目录分隔符,就是这个类的定义文件所在位置。举例:FLEA_Controller_Action 类,保存文件为 FLEA/Controller/Action.php FLEA_Db_TableDataGateway 类,保存文件为 FLEA/Db/TableDataGateway.php控制器一 控制器的定义C 代表 Controller,即控制器,用于接收用户输入(通过浏览器发起的请求),然后调用模型(Model)对输入数据进行处理并获得处理结果。最后将结果传递到视图(View),从而让用户能够看到自己操作的结果。例如用户点击删除文章按钮后,控制器调用操作文章的模型,删除掉指定文章,最后通过视图显示成功删除文章的提示信息。二控制器的编写 根据BBS项目目录安排,我们得把controller文件放置到app/front/controller目录下,于是创建一个文件passage.php,passage.php内容是简单的passage.php上面的是最简单的controller器了,它除了输出hello FLEAPHP,this is my first controller什么也没有做了下面介绍BBS中passage controller的编写Model= &FLEA:getSingleton(Model_passage);/获取M的对象function actiondetail()$rs=$this-Model-detail($_GET);/调用Model里面的方法$data=array(passage=$rs);$this-_executeView(Front/passage.html,$data);/数据交到表现层(smarty)function actionlistall()$rs=$this-Model-listall($_GET);dump($rs);?在passage.php 里面构造一个Controller_passage类,类名规定以Controller_开始,以文件名作为后缀继承FLEA_Controller_Action类,controller_passage类里面的响应函数都得用action当前缀,这里fleaphp规定。当然这些设置你可以修改config文件做到.MODEL一 MODEL的定义M 代表 Model,即模型,用于封装与业务逻辑有关的代码和数据。例如对订单的各种计算。二MODEL的编写根据BBS实例项目的目录安排,我们把MODEL文件放在/app/front/model目录下,现在在model目录下创建passage.php model 文件简单的MODEL实现这个MODEL除了返回hello word 什么也没有做,当然你可以添回很多数据处理,使它的功能满足你的要求。BBS实例项目中的MODEL passage实现find($id);function listall($GET=NULL)if($GET=NULL)die();$id=$GETid;unset($GET);$condition=array(cid=$id);$this-disablelink(comment);return $this-findall($condition);?FLEA:loadClass 载入类,这个Table_passage是我们用到的数据库设置类(在数库操作那一节会讲到)这里面每一个函数名一般对controller中的action,这样一般容易调用一些,当然你也可以任意设置了。Model会被controller调用,在controller中的FLEA:getSingleton(“.”)就指定调用了哪个MODEL了。Controller与Model的关系Controller调用Model获取所需的数据,Model返回数据给Controller,它们的关系就这么简单了下面以控制器与model两节的最简单的例子来演示controller与model的关联简单的passage.php简单的MODEL实现仔细看上面的例子,现在controller与model还是独立的两个类,为了使用controller调用model,我们现在修改controller_passage类Model=new Model_passage();/实例化一个model_passage类function actionlistall()echo $this-Model-helloword();/输出hello wordecho “hello FLEAPHP,this is my first controller”;?这样我们就把两个类关联起来了,这里面为什么同BBS controller 中的passage.php 不同的呢?其实效果是一样的,只是BBS controller 中的passage.php 继承了FLEA_Controller_Action ,使用了FLEA:getSingleton来获取model的对象,下面的这种实现方式的演示 Model=&FLEA:getSingleton(“Model_passage”);/实例化一个model_passage类function actionlistall()echo $this-Model-helloword();/输出hello wordecho “hello FLEAPHP,this is my first controller”;?经过上面的步骤后,你专心在model_passage类中处理你的数据了。fleaphp数据库的操作一 fleaphp数据库的四种关系数据表关联数据表关联是指两个或者多个数据表的记录之间的逻辑关系。例如: 每一个公民都有一个身份证号码 每一位作者都写了多本(0-n)书籍,而每一本书籍都有多个(1-n)作者 每一篇文章都有多个(0-n)评论 每一个评论都属于一篇文章 目前,FleaPHP 支持四种类型的数据表关联,分别是: HAS_ONE: 当前表的每一条记录都拥有最多一条(01)关联记录 HAS_MANY: 当前表的每一条记录都拥有多条(0-n)关联记录 MANY_TO_MANY: 当前表的每一条记录都和其他表的多条(0-n)记录关联 BELONGS_TO: 当前表的每一条记录都属于另一个表的某条记录 对数据库的四种关系,我们不必要看的太难,对应我们学过的数据库概论,里面有one to one ,on to many,many to many三种关系,然后大家可以想像一下,中的四种关系有什么关联呢?实际上,has_one包括了one to one关系,has_many是one to many关系,many_to_many 也就是多对多的关系;然而难懂的就是belongs_to了,这个关系就是一个从属关系,可以这么说,一对一的关系里面,用户表(user)-用户具体信息表(user_profile),可以从用户具体信息这个表的外键是用户表的主键,这样就形成了一对一的从属关系,用户具体信息表从属用户表,另一种从属关系可以一对多,也就是说用户表(user) -用户发表的文章,一个用户发表多篇文章,所以这个文章表里面的信息必属于user,所以又构成belongs_to关系,讲了这么多,belongs_to的实际应用是什么呢?可以方便查现主表的信息,比如你现在索引文章,那这篇文章是谁发表的呢?这里belongs_to就可以查出来了。所以有关系对象的构造稍后在那个例程中都会实际用到,读者先耐心看下面的例子!二 Fleaphp 四种关系的编写前期准备,数据库的创建User 表:CREATE TABLE user ( id int(11) NOT NULL auto_increment, name varchar(150) character set utf8 collate utf8_bin NOT NULL, password varchar(255) character set utf8 collate utf8_bin NOT NULL, admin tinyint(1) NOT NULL default 0, allow tinyint(1) NOT NULL default 1, PRIMARY KEY (id) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 Column表: CREATE TABLE column ( id int(11) NOT NULL auto_increment, uid int(11) NOT NULL default 0, name varchar(255) character set utf8 collate utf8_bin NOT NULL, allow tinyint(1) NOT NULL default 0, introduce text character set utf8 collate utf8_bin NOT NULL, admin varchar(255) character set utf8 collate utf8_bin NOT NULL default amw, PRIMARY KEY (id) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 Passage表: CREATE TABLE passage ( id int(11) NOT NULL auto_increment, uid int(11) NOT NULL, title varchar(255) character set utf8 collate utf8_bin NOT NULL, content text character set utf8 collate utf8_bin NOT NULL, time datetime NOT NULL, cid int(11) NOT NULL, PRIMARY KEY (id) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=latin1 Comment表: CREATE TABLE comment ( id int(11) NOT NULL auto_increment, uid int(11) NOT NULL default 0, pid int(11) NOT NULL, com_id int(11) NOT NULL default 0, title varchar(255) character set utf8 collate utf8_bin NOT NULL, content text character set utf8 collate utf8_bin NOT NULL, time datetime NOT NULL, user varchar(255) character set utf8 collate utf8_bin NOT NULL default amw, PRIMARY KEY (id) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 Mail表: CREATE TABLE mail ( id int(11) NOT NULL auto_increment, toid int(11) NOT NULL, fromid int(11) NOT NULL, touser varchar(200) character set utf8 collate utf8_bin NOT NULL, fromuser varchar(100) character set utf8 collate utf8_bin NOT NULL, title varchar(255) character set utf8 collate utf8_bin NOT NULL, content text character set utf8 collate utf8_bin NOT NULL, time datetime NOT NULL, PRIMARY KEY (id) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;一共有五个表,它们的关系如下:对应fleaphp的四种关系这个图只实现了三种而已晕。可以发现mail与user,column与user,passage与column,commnent与passage都属于belongsTo关系因为前面数据库的所有结果都与后面的表关联再来发现hasmany关系,column与passage,每一条column中的记录都有多条passage记录,同理,user与column,user与mail,user与comment,passage 与comment。Hasone的没有了,不过就是一对一的关系,比如一个人与他的年龄,只是两个属性放在不同的表中而已manyToMany就是多对多关系,得有中间表来连接两个表三 Fleaphp中四种数据库的写法User 表,这里面是实现了hasMany关系,$tableName字段是指数据表的名字, Table_passage,/数据表的类名 foreignKey = uid, mappingName = passage, ),array( tableClass = Table_comment, foreignKey = uid, mappingName = comment, ), array( tableClass = Table_mail,foreignKey = toid,mappingName= mail,) );Mail表实现了belongsTo的写法Table_user,foreignKey=toid,mappingName=user);?Hasone的写法也差不多的Table_mailX;foreighnKey=”id”;mappingName=”maliX”;)?Manytomany怎么编写class Table_Articles extends FLEA_Db_TableDataGateway var $tableName = users; var $primaryKey = user_id; var $hasMany = array(array( tableClass = Table_Comments, foreignKey = article_id, mappingName = comments, ), ); var $manyT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025昭通水富市云富街道招聘乡村公益性岗位工作人员(1人)笔试备考题库及答案解析
- 2025贵州毕节市公安局七星关分局公开招聘警务辅助人员200人笔试参考题库附答案解析
- 2025广西南宁上林县应急管理局招聘编外专业森林消防队员7人笔试模拟试题及答案解析
- 2025吉林大学白求恩第一医院神经创伤外科招聘笔试模拟试题及答案解析
- 2025广东江门开平市苍城镇行政执法辅助人员招聘1人笔试模拟试题及答案解析
- 2025广东金融学院招聘38人笔试模拟试题及答案解析
- 2025年中医肛肠科痔疮内痔外痔诊治模拟考试卷答案及解析
- 2025新东方大学生学习与发展中心云南中心招聘笔试参考题库附答案解析
- 2025湖北恩施州恩施市事业单位考核聘用2023年“三支一扶”服务期满高校毕业生6人笔试模拟试题及答案解析
- 2025年呼吸内镜呼吸道异物的急救处理模拟试题答案及解析
- 2025年综合类-油漆工考试-高级油漆工考试历年真题摘选带答案(5卷单选100题合辑)
- 超声科医生进修成果汇报
- 国家能源集团陆上风电项目通 用造价指标(2025年)
- 融媒体中心保密方案
- 输油管线牺牲阳极法阴极保护施工方案
- 篮球教学室内课件
- 2025年四川省高考历史试卷(含答案)
- 2025党考试题及答案
- 乳牙龋齿护理配合过程
- 2025至2030中国轨道交通行业发展分析及投资前景与战略规划报告
- 健康教育和健康促进课件
评论
0/150
提交评论