thinkphp学习笔记.doc_第1页
thinkphp学习笔记.doc_第2页
thinkphp学习笔记.doc_第3页
thinkphp学习笔记.doc_第4页
thinkphp学习笔记.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

一、框架文件介绍二、创建应用 1.在项目目录创建入口文件 2.创建虚拟主机,访问应用三、路由形式 1.什么是路由答:系统从URl参数中分析出当前请求分组、控制器和操作的过程就是“路由”。 2.Tp框架路由共有4种形式 基本get形式http:/网址/index.php?m=分组c=控制器a=操作方法该方式是最底层的get形式、传统的参数传递方式,不时尚、不安全。 pathinfo路径形式默认方式http:/网址/index.php/分组/控制器/操作方法http:/网址/index.php/Home/Index/advert rewrite重写形式(伪静态技术)省略index.php入口文件http:/网址/分组/控制器/操作方法http:/网址/Home/Index/index 兼容形式http:/网址/index.php?s=/分组/控制器/操作方法http:/网址/index.php?s=/Home/Index/advert以上四种形式除了第种,其他的url模式都可以使用4、 创建控制器5、 View视图模板入口程序文件index.php 路由解析(控制器、操作方法)controller控制器controller控制器View视图Model数据 1.简单模板view调用 $this-display(); /模板名称与当前控制器、当前操作方法的名称一致$this-display(模板名称); /调用当前控制器对应目录指定名称的模板$this-display(控制器/模板名称); /调用其他控制器下的具体模板文件Tp框架有两种模式:开发(调式)、生产【默认】生产模式:错误提示模糊开发模式:错误提示友好define(APP_DUBUG ,true); /开发define(APP_DUBUG ,false); /生产 2.已有模板与tp框架做结合具体实现步骤:A.复制模板文件到View指定目录 B.复制css、img、js静态文件到系统指定目录C.把静态资源(css、img、js)文件的路径设置为“常量”信息(在index入口文件设置)D.在模板文件中通过常量引入静态资源(css、img、js)文件,路径相对入口文件设置 最好设置绝对地址(相对工作站点虚拟主机目录的绝对地址)为了后期模板维护方便,通过常量设置静态资源文件访问目录地址 E.css文件本身的图片设置,其路径相对css文件本身设置后续a、d重复实现即可 2.1静态资源文件引入 2.2静态资源文件存放通过独立路由可以访问不要暴露太多目录信息在模板index.html里边引入css文件,相对地址为什么相对index.php入口文件设置? Index.php+Controller控制器+模板文件=混编文件 引入css文件 2.3 css文件引入图片路径设置绝对、相对地址:一个文件引入另一个文件,另一个文件的相对地址就相对引入文件设置。Index.php-style.cssStyle.css-引入-img图片,图片地址相对style.css文件设置原因:style.css是向服务器发送一个独立的http请求的,因此style.css和img图片是一个单位的信息,与具体index.php文件没有任何关系。模板文件中引入css样式文件引用路径问题:【相对】、【绝对】相对路径:相对入口文件index.php设置绝对路径:从虚拟主机站点目录开始设置的Css样式文件引入图片,路径的设置绝对、【相对】相对地址:相对css文件本身设置模板文件 引入css样式文件(css的相对路径可以相对index.php入口文件设置)Index.php+Controller控制器+模板文件=混编文件 引入css文件css样式文件 引入css样式文件 引入img图片Index.html-css样式-img图片(图片的相对路径是css文件本身)Css样式文件被浏览器发送一个独立请求,因此内部img只于css文件有关系,与其他文件没有关系文件被谁引入的,其相对地址就相对引入文件设置 2.4在入口文件处设置常量引入静态资源文件六、后台页面搭建 1.分组设置 分组:同一个项目里边,由于业务规则的划分,有多个相关的功能模块,它们都有独立的控制器、view视图、配置文件、函数库文件等文件,为了开发维护方便,就给它们创建独立的分组出来,每个分组都有自己的控制器、view视图、配置文件、函数库文件。如果还有其他的业务规则模块,也都是独立的,可以继续创建分组。对分组进行访问:http:/网址/index.php/分组/控制器/操作方法每个分组下的文件文件目录可以参考Home进行设置,他们都是平等的。 2.搭建Admin后台登录页面 3.后台首页面搭建Tp框架提供了常量http:/网址/index.php/分组/控制器/操作方法/名称/值/名称/值_MODULE_:路由地址分组信息(http:/网址/index.php/分组)_CONTROLLER_:路由地址控制器信息 (http:/网址/index.php/分组/控制器)_ACTION_:路由地址操作方法信息(http:/网址/index.php/分组/控制器/操作方法)_SELF_:路由地址的全部信息 (http:/网址/index.php/分组/控制器/操作方法/名称/值/名称/值)MODULE_NAME:分组名称CONTROLLER_NAME:控制器名称ACTIOIN_NAME: 操作方法名称 4. Frame的src属性值每个frame的src属性值需要通过独立路由地址访问,给每个src根据_CONTROLLER_常量设置绝对路径。 5.后台商品相关页面搭建七、细节处理 1.配置文件介绍 ThinkPHP/Conf/convention.php 系统主要配置文件 shop/Common/Conf/config.php 当前shop项目的配置文件 shop/Home/Conf/config.php 当前shop项目Home分组的配置文件 以上三个配置文件,如果存在同名的配置变量,后者会覆盖前者。系统里边并不是全部的配置变量都有有convention.php里边定义A. 大部份在convention.php有定义B. 在Behavior行为文件里边有定义一部分(例如:SHOW_PAGE_TRACE)C. 在框架的代码角落里边有零星的一点配置变量(例如:,MOUDLE_ALLOW_LIST) 2.默认分组设置 3.框架的两种模式 开发和生产模式入口文件index.php: define(APP_DEBUG,true); /开发调式模式 define(APP_DEBUG,false); / 线上生产模式【默认】 开发模式(调式模式):每次请求会加载每个应用程序文件,比较耗费资源,错误提示比较友好。会自动清除commonruntime.php文件,会依次加载每个需要文件 生产模式(线上模式): 该模式比较节省资源,会把请求过程中的一些通用程序文件给“编译”到一个文件里边(shop/Runtime/commonruntime.php),这样系统的每次请求加载的文件数目就比较少(节省了许多文件打开、关闭的开销)错误信息模糊,不方便调式 4.开启Smarty模板引擎 5.smarty模板标记有冲突 与css或js有冲突解决:在与内容中间设置空格使得左右标记换行设置literal/literal变换smarty的标记符号 6.页面底部设置跟踪信息八、框架的执行流程(了解) Index.php-.ThinkPHP/ThinkPHP.php-Think/Think.class.php-Think/App.class.php9、 总结1. 创建应用2. 四种路由形式http:/网址/index.php?m=分组c=控制器a=操作方法http:/网址/index.php/分组/控制器/操作方法 默认http:/网址/分组/控制器/操作方法http:/网址/index.php?s=分组/控制器/操作方法3. 控制器调用视图模板$this-display();$this-display(模板名称);$this-display(控制器/模板名称);4. 已有模板与框架结合复制模板文件到view目录复制css/js/img 静态资源文件 到Public目录下给静态资源文件访问的路径 设置常量在模板文件中通过常量访问 静态意资源文件css文件本身有图片,图片设置为该css文件本身的相对路径访问5. 创建Admin分组6. 使用系统常量_CONTROLLER_MODULE_ACTION_SELF_ MODULE_NAMECONTROLLER_NAMEACTION_NAME7. 配置文件ThinkPHP/Conf/convention.phpShop/Common/conf/config.phpShop/Home/Conf/config.php8. 两种模式开发调式模式 define(APP_DEBUG,true);线上生产模式 define(APP_DEBUG,false;9. 开启Smarty模板引擎设置配置变量TMPL_ENGINE_TYPE=Smarty10、 数据库操作Model模型 1.连接配置数据库 2.创建model模型类原则上每个数据表 都对应一个model模型类 在php.ini 中修改 3.两种方式实例化model对象 3.1实例化普通Model对象 $model=new ModelXXXModel();除了可以实现简单操作(调用父类Model方法实现)也可以实现一些复杂操作(调用具体普通model方法实现) 3.2 实例化基类Model对象可以实现对数据库的基本操作$model = D();$model = D(Goods);(该方式允许我们即使不创建具体的model模型类文件,也可以对数据表的数据进行操作)如果一个数据表没特殊方法要求,就可以通过D(XXX)进行操作。如果数据表有特殊方法要求(例如用户名和密码判断需要一个特殊方法),就需要在普通model模型类里边定义好,通过 new ModelXXXModel() 形式实例化对象,进而操作特殊方法。11、 数据基本操作 1.数据查询操作调用方法:model 对象-select()具体使用:$model-select(); /查询并返回数据表的全部记录信息$model-select(主键id值);/查询主键信息等于条件id值的记录$model-select(id1,id2,id3.);/查询主键信息在条件范围内的记录(使用select()方法会始终返回一个二维数组信息) 1)具体数据操作方法使用 where()条件$model-where() /条件值就是sql语句where后边的结果值 limist()限制条数$model-limit(数字) /严格查询数字条数的记录 field()限制查询字段$model-field(字段1,字段2,字段3) order()排序$model-order(排序条件 asc/desc) group()分组查询group by$model-group(分组条件) having()条件设置方法Having设置查询条件的效果与 where 使用效果类似区别:Where:语句条件字段,必须是“数据表中存在的”字段Having: 语句条件字段,必须是 查询结果集中存在的字段 Where()/limit()/field()三个方法直接存在于父类Model里边 Having()/order()/group()三个方法存在于Model的魔术方法_call()里边 2).连贯操作以上具体方法在使用的时候可以一并使用多个,形成连贯操作,并且没有顺序要求例如:$obj-limit()-order()-field()-having()-group()每个方法执行完毕都把参数信息传递给成员options,该options形成一个数组 系统最后就是遍历options数组把一个复杂的sql语句给拼装起来的。 3).数据查询操作 Select(空/数字/数字的字符串) 返回一个二维数组结果 4).辅助方法 where() limit() field() order() having() group()2数据添加操作调用方法:model对象-add() 具体两种方式使用 数组方式$数组=array()元素(下标=元素值),元素(下标=元素值),.下标:必须是数据表字段名称(否则不给添加到数据记录里边)$model(普通对象)-add(数组);数组的元素键名与数据表字段的名称必须一致 AR(Active Record 活跃记录)方式$model-属性(字段)=值; /属性字段 与 数据表字段一致,否则不给写入数据$model-属性(字段)=值;$model-add();AR规范要求一个model模型类与一个具体的数据表对应model 模型类实例化的对象 与 数据表的一条记录对应 model 对象的属性 与 记录的字段对应TP框架的AR是仿真产品,因为在每个业务Model 模型类里边并不存在对应数据表的字段信息。Add()方法返回新记录的主键id值3数据修改操作调用方法: model对象-save()与add添加一致具体两种方式使用: 数组方式$model-save(数组); AR方式$model-属性(字段)=值;$model-属性(字段)=值;$model-save();数组的元素下标(属性字段)必须与数据表字段保持一致Save()方法返回受影响的记录条数注意:数据修改必须设置条件,主键id或where()方法 ,二选一即可,否则执行失败。4在后台实现商品添加逻辑 1)制作添加空表单 2)收集表单信息实现数据写入数据库5. 在后台实现数据修改操作 5.1 get参数的传递和接收Pathinfo路由解析方式传递get参数信息格式:http:/网址/index.php/分组/控制器/操作方法/名称/值/名称/值控制器操作方法接收get参数:并不是直接使用$_GET接受信息,而是通过方法的形式参数接收 function方法名称($名称,$名称) 传递的get变量名称与方法形参变量的名称必须一致(形参参数在没有默认值的情况下,每次请求必须传递)例如:http:/网址/index.php/Admin/Goods/upd/goods_id/171/goods_name/htc_two上述url是给upd操作传递两个参数:goods_id 和 goods_nameFunction upd($goods_id,$goods_name) 6. 数据删除操作7. 执行原生sql语句增 $sql=”insert into 表名 (字段1,字段2) values (值1,值2)”;删 $sql=”delete from 表名 where 条件”;改 $sql=”update 表名 set 字段1=值1,字段2=值2 where 条件”;查 $sql=”select * from 表名”;查询语句: $model 对象-query($sql); 返回一个二维数组结果添加/修改/删除语句:$model 对象-execute($sql); 返回受影响记录条数12、 实现表单自动验证1.实现前台用户注册的功能2.实现表单自动验证Create()方法收集表单信息同时的,也可以进行表单自动验证等功能。(2) 总结1. 利用model模型实现数据的增、删、改、查操作a) 添加数据 Add()方法,其返回新记录的主键id值两种方式:数组、AR方式b) 删除数据Delete(),返回删除的记录数目Delete(主键id) delete(“id1,id2,id3”)C)修改数据Save(),返回修改的记录数目两种方式:数组、AR方式条件要求:主键id、where()d)查询数据Select(),返回二维数组信息Select(id) select(“id1,id2,id3”)Find(主键id),通过一维数组形式返回一条记录结果2. 辅助方法 Field() where() limit() group() oreder() having()3. 后台商品的添加、修改操作 商品添加:添加数据表单、收集表单信息 creaet() 商品修改:修改按钮、展现修改表单、收集表单信息 get参数的传递使用 http:/网址/index.php/分组/控制器/操作方法/名称1/值1/名称2/值2 Function 操作方法($名称1,$名称2)4. 注册表单自动验证通过create()方法收集表单信息,该方法同时具备表单自动验证功能,其还具有非法字段过滤功能。验证规则(UserModel.class.php)Protecter $_validate=array( arr

温馨提示

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

评论

0/150

提交评论