《Thinkphp学习笔记》由会员分享,可在线阅读,更多相关《Thinkphp学习笔记(28页珍藏版)》请在金锄头文库上搜索。
1、Thinkphp 复习1、概况使用面向对象的开发结构和 mvc 模式,采用单一入口,融合了 struts2 的 action 思想和 jsp 的 taglib,ROR 的 orm 映射和 activerecord 模式,封装了 curd 常用操作,支持多数据库切换, 分布式数据库,缓存,用于敏捷 web 应用开发,简化企业级开发2、什么是 LAMPLAMP 是基于 Linux,Apache,Mysql,PHP 的开放资源网络开发平台Linux 是开放的操作系统Apache 是最通用的网络服务器Mysql 是带有基于网络管理工具的关系数据库PHP 是流行的对象脚本语言LAMP 是强大的网站解决方
2、案3、什么是 OOP面向对象编程(Object Oriented Programming)是一种计算机编程架构达到的目标:重用性,灵活性,扩展性基本原则:计算机程序由单个能起到子程序作用的单元或对象组合而成,每个对象都能够接收信息、处理数据、向其他对象发送信息。其他一些概念组件:数据和功能一起在运行着的计算机程序中形成的单元,组件是模块化和结构化的基础。抽象性:封装性:每类组组件都提供了一些与其他组件进行通信的借口,并规定其调用方法多态性:4、什么是 mvcMvc 是一个设计模式,强调输入-处理-输出分开,应用程序被分为三个核心部件( 模型 M:表示企业数据和业务规则视图 V:用户交互界面处理
3、器C:接收用户的输入,并调用模型和视图完成用户的需求。本身不输出任何东西和做任何处理,它只是接受请求并决定调用哪个模型部件去处理请求,然后确定用哪个视图显示 模型处理后返回的数据)5、什么是 ORM对象-关系映射(Object/relation map)面向对象开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。业务实体在内存中表现为对象,存在关联和继承关系,在数据库中表现为关系数据,无法表达关联和继承关系。ORM 实现程序对象到关系数据库数据的映射。6、什么是 CURD创建(Create)、更新(Update)、读叏(Read)和初除
4、(Delete)7、什么是 ACTIVERECORD类映射到一张表,对象映射到表中的一行记录,对象属性映射到表的字段,最大程度快速实现模型操作,封装了对数据库的访问(CURD),封装了部分业务逻辑8、什么是单一入口一个项目有一个统一的入口文件,入口文件是第一步被执行的规范,控制灵活9、 ThinkPHP 特性类库导入:采用基于类库包和命名空间的形式导入类库,严格检查加载文件的大小写。 URL 模式:支持普通模式,PATHINFO 模式,REWRITE 模式,兼容模式等 URL 模式。随心所欲构建 URL 地址。编译机制:核心编译和项目动态编译ORM缓存机制:支持多种动态数据缓存类型,以及可定制
5、的静态缓存规则扩展机制:支持包括类库扩展,驱动扩展,应用扩展,模型扩展,控制器扩展,标签库扩展, 模板引擎扩展,widget 扩展,行为扩展,模式扩展,10、Thinkphp 框架目录ThinkPHp.php 框架入口文件Common:框架文件,框架配置, Lang 框架语言包Lib 框架基类库Mode 框架模式扩展Vendor:第三方类库目录11、thinkphp 命名规范类文件已.class.php 为后缀,使用驼峰命名法,而且首字母大写文件的命名和调用大小写要一致函数命名要使用小写字母加下划线的方式或者驼峰法并且首字母小写变量命名使用驼峰发且首字母小写常量以大写字母和下划线命名12、th
6、inkphp 的单字母函数1、A 函数实例化 Action 类。A(name,app=)实例化 Action name 表示 Action 名称和 app 表示项目名,默认是当前项目; 返回实例化后的 Action 对象,如果对应的Action 类不存在则返回false例子例如我们的程序有 2 个Action 分别是IndexAction 和 TestAction,在 IndexAction 中有个myHello 方法能够输出hello world,如果我也想在TestAction 中也输出同样一段文字怎么办?最原始的方法首先我们导入IndexAction.class.php 这个文件,然后
7、new IndexAction,最后调用myHello 方法才行。代码一般为 :PHP 代码1. myHello();/调用 myHello()方法9.10. 11. ?那么,如果我们用A 函数,怎么写呢?PHP 代码1. myHello(); 7.8.9.?跨项目调用$User = A(User,App2); / 实例化App2 项目癿UserAction 控刢器对象2、B 函数执行某个行为B(name)调用行为 name,name 表示名称例如 B(app_begin);就是在项目开始之前,执行这个行为定义的所有函数,支持 2 个参数, 第 二 个 参 数 支 持 需 要 接 受 一 个
8、数 组 , 例 如 B(app_begin,array(name=>tdweb,time=time();这样。3、C 函数读取设置配置获取和设置配置值C(name) 新增或者更新设置C(name,value)如果name 的知识数组,就进行批量赋值;C(name=null,value=null)获取值:获取所有设置:C(); 不传递任何参数,返回一个包含所有设置的数组。获取指定配置:C(URL_MODEL) 这样就能得到URL_MODEL 的配置信息获取指定二维数组配置:C(array.name),这样就返回数组 array 下的key 为 name 所对应的值设置值:为二维数组赋值C(
9、array.name,value),原理同上(获取 array.name 的值),后边的 value是值批量赋值:$test=array(URL_MODEL=1,THIN_MODEL=true); C($test);这样直接将数组里的值赋值了判断是否赋值:C(?URL_MODEL)这样前边加个?,如果已经赋值,则返回true需要说明的是,这里虽然更改了配置的值,但是仅仅是这个页面做了更改,到下个页面就不起作用了,如果想改就永久更改,那么需要配合F 函数,将配置文件写入config.php才行。也可以支持二维数组的读取和配置,使用点语法进行操作,如下:获取已经设置的参数值:C(USER_CONF
10、IG.USER_TYPE)设置新的值:C(USER_CONFIG.USER_TYPE,1);4、D 函数实例化 modelDAO 函数应该是我们写程序用的最多的函数了。和A 函数类似,如果不使用 D 函数, 就需要导入Model,然后new Model,剩下都是一样的。但是D 函数有 2 个有点,一是如果之前实例化过这个Model,那么就不再实例化了,剩资源;二是方便调试,如果不存在 这个Model,会抛出TP 异常,非常人性化。如果访问本项目的Model 直接D(Model 名称);就可以了,如果打算跨项目访问,就使用 D(Model 名称,项目名称);如$User = D(User, Ad
11、min);$User = D(Admin.User);5、F 函数快速读取和保存文件数据快速保存数据:F(mydata,这里是要保存的数据),这样就在项目 Data 目录下保存了一个名叫mydata.php 的文件,里边的内容是该函数的第二个参数。指定保存时间 :F(mydata,这里是要保存的数据,60),这样,如果下次再访问,间隔大于 60 秒则删除次缓存文件。指定保存目录:F(mydata,这里是要保存的数据,60,DATA_PATH) ,这样就指定保存在 data 目录下立即删除缓存:F(mydata,null),第二个参数传递一个null 值,这样就删除了mydate这个缓存读取缓存
12、数据:F(mydata),这样就读取这个缓存了6、L 函数语言定义函数,L(intro)获取定义成intro 的语言,l(intro,介绍)为 intro 赋值,关于这个赋值的长久性,道理同C 函数一样,但是仅仅是这个页面做了更改,到下个页面就不起作用了。7、R 函数还记得我们的A 函数吧,如果仅仅想执行某个方法,其实用R 函数更方便,刚才的可以替换成PHP 代码1. 跨项目调用R(User,importUser,App2);/ 远程调用App2 项目的UserAction控制器癿importUser 操作方法8、S 函数全局缓存读写函数,和C 类似,不过是直接写成文件的哦,写在Temp 目录
13、下,不过在缓存有一点需要注意,如果缓存名称是aaa,那么缓存生成的文件名称就是md5(aaa) 的值,值得注意。9 、U 函数U 函数是很强大的一个函数,它主要是进行URL 组装,同时支持不同模式和路由例如:取得当前模块的Action 地址 :U(/nowMethod);取得当前模块的Action 地址,并传递参数:U(/nowMethod?params=test);(如果不习惯上边那种方式,可以使用U(/nowMethod,array(params=test);这样的数组方式传递参数,效果是一样的)访问其他模块的方法:U(Other/otherMethod),这样就是访问Other 模块下的otherMethod 方法跨项目访问:U(appname:/Other/oth