thinkphp3.2学习备忘录
2018-03-07 16:12
190 查看
序言
由于本人在学习的过程中很容易忘记框架,为了快速拾取和纠错,特列举基础内容。之后不断更新。一、ThinkPhp3.2文件目录介绍
其中要注意www/Common/Conf/config.php是www项目的配置文件
而www/Home/Conf/config/config.php是当前项目Home分组的配置文件
convention.php和这两个config.php如果存在同名配置文件,后者覆盖前者。
例如设置:
其中模版引擎的默认方案是左右开始结束标识符为{},如上图。
二、如何调用框架
1、引入框架创建目录
在www项目根目录的index.php下引入ThinkPhP.php即可。引入之后可在www根目录下生成以下文件目录
2、四种路由形式
路由:系统从URL参数中分析出当前请求的分组、控制器和操作的过程就是“路由”。tp框架路由共有4种形式:
1. 基本get形式:
http://网址/index.php?m=分组&c=控制器&a=操作方法
2. pathinfo路径形式[默认方式]
http://网址/index.php/分组/控制器/操作方法
3. rewrite重写形式(伪静态技术)省略index.php入口文件
http://网址/Home/Index/index
4. 兼容形式
http://网址/index.php?s=/分组/控制器/操作方法
注意一般增加get参数时如下使用:
http://网址/index.php/分组/控制器/操作方法/名称/值/名称/值
###创建控制器和视图模版
名字对其即可
注意控制器调用视图模板方式
this−>display()this−>display()this->display(模板名称)
$this->display(控制器/模板名称)
3、使用系统变量
__CONTROLLER__路由地址控制器信息 __MODULE__路由地址分组信息 __ACTION__路由地址操作方法信息 __SELF__路由地址全部信息 MODULE_NAME CONTROLLER_NAME ACTION_NAME
4、开发和生成模式说明
入口文件index.php//框架两种模式:[默认]生产(线上)、开发(调试) define('APP_DEBUG',true);//开发(错误提示非常具体) //define('APP_DEBUG',false);//生产(错误提示模糊)
开发调试模式:每次请求加载每个应用文件,会自动清除common~runtime.php文件
生产模式:该模式请求过程会把通用文件给“编译到一个文件里边”
三、MODULE和命名空间
这里注意许多不认识的函数如D()I(),去thinkPHP\Conf\convention.php查询1、两种方式实例化model对象
实例化普通model对象
$model = new\Model\XXXModel();
除了可以实现简单操作(调用父类Model方法实现)
也可以实现一些复杂操作(调用具体普通model方法实现)
实例化基类Model对象
可以实现对数据库的基本操作$model = D(); //实例化基类Model,没有关联任何表 $model = D('Goods'); //实例化父类Model对象,并操作xx_goods业务数据表
(该方式允许我们即使不创建具体的model模型类文件,也可以对数据表的数据进行操作)
如果一个数据表没有特殊方法要求,就可以通过D(XXX)进行操作。
如果数据表有特殊方法(例如用户名和密码判断需要一个特殊方法),就需要在普通model模型类里边定义好,通过new \Model\XXXModel()形式实例化对象,进而操作特殊方法。
2、Control与Viem直接Module的传递
在XXXcontrol写this−>assign(′io′,this−>assign(′io′,info),注意传递到XXX.html,在XXX.html调用$io即可.
3、具体获得数据操作方法使用
$model->操作方法
where():限制操作(查询)条件
limit():
limit(长度):限制查询的条数
limit(偏移量,长度):偏移量=(页码-1)*长度
field():限制查询的字段
order():排序查询order by
group():分组查询group by
having():条件设置方法
4、数据的增删改操作方法
①增:Model->add()
两种方式1)数组方式
数组=array(元素(下标=>元素值)元素(下标=>元素值)…)数组=array(元素(下标=>元素值)元素(下标=>元素值)…)model(普通对象)->add(数组);
2)AR(Active Record 活跃记录)方式
model−>属性(字段)=值;//属性字段与数据表字段一致,否则不给写入数据model−>属性(字段)=值;//属性字段与数据表字段一致,否则不给写入数据model->add();
②改:Model->save()
与add添加一致。但要注意,如果只修改一个,需要加入主键id作为修改标识。
修改多个,就需要model->where(条件)->save();
③删:Model->delete()
model−>where()−>delete()或者model−>where()−>delete()或者model->delete(id);//其中id为主键5、执行原生sql语句
$sql="insert select update delete ......"; ①查询语句:$model 对象->query($sql); ②添加/修改/删除语句:$model 对象 ->execute($sql);
6、表单自动验证
①通过model−>create();方法收集表单信息,该方法同时具备表单自动验证功能,其还具有非法字段过滤功能。②验证规则在model模型类中修改model−>create();方法收集表单信息,该方法同时具备表单自动验证功能,其还具有非法字段过滤功能。②验证规则在model模型类中修改_validate值protected $_validata=array(
array(字段,规则,错误提示[,条件,附加规则,时间])
)
7、非限定名称、限定名称、完全限定名称
命名空间中的三个名称的术语如下所示:1.非限定名称,或不包含前缀的类名称,例如 $comment = new Comment();。如果当前命名空间是Blog\Article,Comment将被解析为Blog\Article\Comment。如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。
2.限定名称,或包含前缀的名称,例如 $comment = new Article\Comment();。如果当前的命名空间是Blog,则Comment会被解析为Blog\Article\Comment。如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。
3.完全限定名称,或包含了全局前缀操作符的名称,例如 $comment = new \Article\Comment();。在这种情况下,Comment总是被解析为代码中的文字名(literal name)Article\Comment。
其实可以把这三种名称类比为文件名(例如 comment.php)、相对路径名(例如 ./article/comment.php)、绝对路径名(例如 /blog/article/comment.php),这样可能会更容易理解。
在这里创建一个Blog 空间,使用非限定名称,表示当前Blog空间,实例化以后这个调用将被解析。使用限定名称,表示相对于Blog空间,实例化以后这个调用将被解析成 Blog\Article\Comment(),注意类前面没有反斜线。使用完全限定名称,表示绝对于Blog空间,实例化以后这个调用将被解析,注意类前面有反斜线和没有反斜线区别。
注:访问公共空间,文件里没有namespace关键字,则通过“\元素”访问公共空间元素
8、两种方式实例化功能类对象
①完全限定名称 $obj = new \Think\Verify(); ②空间类元素引入 use Think\Verify; $obj = new Verify();
相关文章推荐
- THINKPHP3.2学习笔记(1)目录结构
- ThinkPHP3.2视频学习教程
- thinkphp3.2学习记录
- thinkphp3.2学习小结
- ThinkPHP3.2学习(2)入口文件
- onethink和thinkphp3.2学习
- ThinkPHP3.2 学习与实例开发 独立分组(一)
- thinkphp3.2 学习
- thinkphp3.2学习小结
- 开始学习ThinkPHP了,这学期熟悉3.2,下学期开始5.0
- Cocos2d-x 3.2 学习笔记(一)环境搭建
- cocos2dx3.2学习笔记之Director(导演类)
- wxwidgets学习与使用备忘录二(学习、熟悉篇)
- ThinkPHP 3.2.x 集成极光推送指北
- zend studio 配thinkphp框架学习笔记
- Java学习个人备忘录之接口
- 学习ThinkPHP笔记
- Thinkphp3.2访问Url时去掉模块
- ThinkPHP 3.2中vendor()方法的深入研究及PHPMailer的正确扩展
- SLAM 的初步学习(一)--ubuntu14.04 下安装 opencv3.2