TP常用知识
2018-02-28 11:02
113 查看
1. 结构
2. 部署
2.1. 跳转过程
1.当输入网址时 配置host文件 进行跳转2.vhost文件导入到www下的项目文件夹
3.Apache对文件夹进行解析
2.2. 站点配置
将文件夹ThinkPHP与index.php放到项目文件夹下2.3. 设置url
1.url组成域名www.tp.com/入口文件index.php/模块home/控制器index/方法index
2.url设置
在ThinkPHP/conf的convention.php中,可以设置默认模块/默认控制器/默认方法 从而可以省略。
3. 控制器
3.1.命名规范
采用大写驼峰式 IndexController.php3.2.书写步骤
<?php // 第一步:声明命名空间 namespace Home\Controller; // 第二步:使用父类控制器 use Think\Controller; // 第三步:定义自己的控制器并继承父类 class UserController extends Controller{ // 第四步:函数部分 public function aaa(){ echo 'aaaa'; } }
3.3. functions.php
函数A实例化一个对象函数R实例化一个对象,且调用了方法
函数U根据当前的URL设置生成对应的URL地址 U('方法名')
$this->success(‘提示信息’,‘跳转的路径’)
$this->error(‘提示信息’,‘跳转的路径’)
$this->redirect(‘跳转的路径’,’传递的参数’,’时间’,’提示信息’);
3.4. 4.辅助sql函数
where $res=$model->where('typeid=3 and pname="海尔电视"')->select(); limit $res=$model->limit('5,3')->select(); field $res=$model->field('panme,price,pcount')->page('3,3')->select(); order $res=$model->order('price desc')->select(); group $res=$model-> ->field('pname,count(*) as 数量,sum(price) as 总价') ->group('pname') ->selct(); count $res=$model->count(); max $res=$model->max('price'); min $res=$model->min('price'); avg $res=$model->avg('price'); sum $res=$model->sum('price'); query $res=$model->query('select * from tablename'); execute 可以用去增删改:$res=$model->execute("insert into tablename(id,name,price,count) values('1','大众',1000,2)");
4. 路由
4.1. 传统路由
http://www.php.com/index.php/?m=模块&c=控制器&a=操作方法在ThinkPHP/conf/convention.php设置进行更改m|c|a|
4.2. 模式pathinfo
http://www.php.com/index.php/模块/控制器/操作方法在application/conf/conf.php下面设置‘URL_PHTHINFO_DEPR’ => ’-’,可以进行修改斜线间隔符
4.3. 模式rewrite
1.在apache/httpd.conf中开启重启模式2.在vhost中授权所有的访问
3.htaccess文件放到项目下面
4.重启运行 成功隐藏index.php
5.此目的为隐藏index.php
4.4. 兼容模式
兼容的样式:http://www.php.com/index.php/?s=模块/控制器/操作方法设置前面得字母:‘VAR_PATHINFO’ => ‘s’,
选择url的模式:application/conf/config.php中'URL_MODEL'=>1
pathinfo为1 rewrite为2 兼容模式为3
(传统与pathinfo的联合)
5. 配置
5.1. 分级配置
核心配置文件ThinkPHP/conf/convention.php
公共配置文件
Application/common/conf/config.php
模块配置文件
Application/Home/Conf/config.php
优先级
1.核心 2.公共 3.模块
5.2. 配置读取
1.ThinkPHP/common/functions.php中的C函数进行读取C('DEFAULT_M_LAYER')进行读取出来
C(‘配置参数’,’配置的值’);
2.省略模块与方法
在公共配置文件application/conf/config.php
写法
‘url_route_rules’=>array(
‘showuser’=>’Home/user/showuser’,
)//对应省略了模块与控制器
6. 视图
6.1. 说明
view/视图文件夹与控制器的名字是一样的 控制器名对应文件夹名在视图文件夹下面可以新建对应控制器的html文件
Html文件的名字对应控制器下面方法的名字
6.2. 显示要求
1.显示本方法对应的本页面$this->display();
2.显示本控制器下其他方法的页面
$this->display(‘login’);
3.显示其他控制器下的方法对应的页面
$this->display(‘user/showusers’);
4.显示其他模块的控制器下的方法对应的页面
$this->display(‘Home@user:showuser’);
6.3. 模板变量
1.定义$name='';
2.分配
$this->assign('name',$name);
3.引用
{$name}
6.4. 定界符
左定界符'TMPL_L_DELIM'=>'<{';
右定界符
'TMPL_R_DELIM'=>'}>';
6.5. 替换机制
ü __MODULE__:替换当前模块的url地址(不含域名)ü __CONTROLLER__:替换当前控制器的url地址(不含域名)
ü __ACTION__:替换当前操作方法的url地址(不含域名)
ü _SELF__:替换当前网页url地址(不含域名)
ü __PUBLIC__:替换当前公共目录地址(不含域名)
6.6. 函数
显示display解析显源码fetch
抓取网页源码show
解析网页源码
变量
一维数组
索引数组
中括号
<{$arr[0]}>
点方式
<{$arr.0}>
关联数组
中括号
<{$arr[k]}>
点方式
<{$arr.k}>
二维数组
索引数组
中括号
<{$arr[0][0]}>
点方式
<{$arr.0.0}>
关联数组
中括号
<{$arr[k][k]}>
点方式
<{$arr.k.k}>
表示对象
方式一$gd->pid
方式二$gd:pid
6.6.1. 常量
ü $Think.server 相当于php当中的$_SERVER[]ü $Think.post 相当于php当中的$_POST[]
ü $Think.get 相当于php当中的$_GET[]
ü $Think.request 相当于php当中的$_REQUEST[]
ü $Think.cookie 相当于php当中的$_COOKIE[]
ü $Think.session 相当于php当中的$_SESSION[]
ü $Think.config :得到系统的配置的值
ü $Think.const :得到系统常量的值
6.6.2. 模板变量
ü 时间<{$time|date=('Y-m-d H:i:s'),###}>
ü 密码
<{$password|md5=###}>
ü 截取
<{$str|substr=###,0,7}>
ü 说明
如果只有一个参数,则###可以省略
多个参数时,第一个为###,可以省略
6.6.3. 默认值
<{$name|default='张三丰'}>6.6.4. 运算符
+-*/%++--6.6.5. 判断if
<if condition="$score egt 90">优秀
<elseif condition="$score egt 80" />
良好
<else/>
不及格
</if>
6.6.6. 遍历循环
foreach一维数组
foreach($arr as $key=>$val){
语句;
}
二维数组
//name数组的名字 item数组的值 key数组的下标
<foreach name='arr' item='val'>
<{$val.name}><br>
<{$val.from}><br>
<{$val.age}><br>
</foreach>
volist
一维数组
<volist name='arr' id='val' key='k'>
<{$k}=><{$val}>
</volist>
二维数组
//name数组的名字 id数组的值 key数组的下标
<volist name='arr' id='val'>
<{$val.name}><br>
<{$val.from}><br>
<{$val.age}><br>
</volist>
6.6.7. 标签php
传统模式<?php
echo '姓名是:'.$name.'<br>';
?>
TP模式
<php>echo '姓名是:'.$name<php>
6.6.8. .引用静态文件
传统方式:<link rel="stylesheet" type="text/css" href="Public/css/style.css">
常量方式:
<link rel="stylesheet" type="text/css" href="__PUBLIC__/css/style.css">
TP方式:
<import type="css" file='css.style'>,
第一个元素为文件夹名字
第二个元素为被引用文件的名字
6.6.9. 不同控制器的方法
<a href='<{:U("manager/showlogin")}>'>新闻</a>6.6.10. include
<include file='include/header' />注解:引用的是include文件夹下的header.html
6.6.11. block
<block name='title'><title>标题</title></block><extend name='tpl/base' />
总结:block表示可以被修改的
extend把文件进行继承
7. 模型
7.1. 连接数据库
使用PDO底层在ThinkPHP/thinkphp_3.2.3_full/library/Think/DbDriver.class.php7.2. 配置文件位置
7.2.1. 方法1
Application/Common/Conf/config.php7.2.2. 方法2
1.新建配置文件/Application/Common/Conf/db.php
2.在db.php中加上连接数据库的配置
3.在confid.php中注明
'LOAD_EXT_CONFIG'=>'db',
4.运行即可
7.2.3. 后缀
'ACTION_SUFFIX'=>'Action'在url访问的时候 可省略action不写
7.3. 定义
M(Model),它代表的就是数据 数据库的数据7.4. 步骤
7.4.1. 创建模型文件
命名规则:GoodsModel.class.php7.4.2. 定义模型类
<?php//第一步:命名空间
namespace Amin\Model;
//第二部:引用父类
use Think\Model;
//第三部:定义自己的模型
class GoodsModel extends Model{
}
?>
7.4.3. 控制器调用模型
<?php//第一步:命名空间
namespace Amdin\Controller;
//第二部:引用父类
use Think\Controller;
//第三部:定义控制器
class Goods Model extends Controller{
//第四步:调用admin里模型的方法
function showlist(){
$model=new \Admin\Model\GoodsModel();
dump($model);
}
}
?>
7.4.4. 访问URL
www.php.com/index.php/Amin/goods/showlist7.5. 控制器中实例化模型
$model=new \Admin\Model\GoodsModel();$model=M('Goodsinfo');针对的是Goodsinfo的父类进行实例化
$model=D('Goodsinfo');针对的是Goodsinfo模型进行实例化
M实例化父类的模型
D首先实例化自己 如不存在,则实例化父类
7.6. CURD
7.6.1. Creat
$model=D('Goodsinfo');$data=array(
'typeid'=>'5',
'pname'=>'天猫'
);
$res=$model->add($data);
7.6.2. Update
$model=D('Goodsinfo');$data=array(
'typeid'=>'5',
'pname'=>'天猫'
);
$res=$model->save($data);
7.6.3. Read
查询所有:$res=$model->select();查询一条:$res=$model->select(‘11’);
查询多条:$res=$model->select('11,12,13');
查询一条:$res=$model->find(11);
select 返回二维数组
find返回一维数组
7.6.4. Delete
$model=D('Goodsinfo');$res=$model->delete('15,16,19');
7.7. 请求数据
7.7.1. 第一种方式
$_GET,$_POST$_GET['username'];
7.7.2. 第二种方式
I(参数)I('get.username');
7.7.3. xss
'DEFAULT_FILTER'=>'htmlspecialchars',7.8. 判断为空
7.8.1. 第一种方式
empty(),isset()7.8.2. 第二种方式
IS_POST,IS_GET7.9. AR模式
7.9.1. Active Record
模式 即对象关系映射(ORM)7.9.2. AR类→数据表
AR属性→表字段AR实例→表记录7.9.3. 增删改查
数据添加$model->typeid=1;
$model->price=100;
$res=$model->add();
数据修改
$model->typeid=1;
$model->price=100;
$res=$model->save();
$model->find(13);
$model->typeid=1;
$model->price=100;
$res=$model->save();
数据查看
$res=$model->select();
数据删除
$model->find(13);
$res=$model->delete();
7.9.4. 字段映射
一一对应protected $_map=array(
''=>''
);
create进行收集数据
$data=$model->create()
7.9.5. 自动验证
protected $_validate=array(array('typeid','require','不能为空'),
array('pname','require','不能为空')
);
当is_post的时候进行验证
7.9.6. 自动完成
相当于默认的值protected $_validate=array(
array('typeid','5'),
array('pname','张迪')
);
8. 调试
8.1. 跟踪信息
Application/common/conf/config.php'SHOW_PAGE_TRACE' => true,
8.2. 调试模式
在index.php进行设置define('APP_DEBUG',True);开发模式:更详尽
生产模式:更简单
8.3. SQL调试
$model->getlastsql();8.4. 性能调试
memory_get_usage();G函数
1.设立锚点
G('start');
G('stop');
2.输出
G(‘开始’,’结束’,’数字或者是字母m’);
数字:显示时间 数字表示的几位小数
m:内存使用情况 单位KB
8.5. 函数trace
trace($str,'str=');'trace_page_tabs'=>array(
)
进行更换名称
8.6. 自定义
函数文件
函数文件
8.6.1. 系统公共函数
Application/Common/Common/function.php在控制器中进行调用即可
8.6.2. 自定义函数
Application/Common/Common/下建立f1.php在config.php文件中'LOAD_EXT_FILE'=>'f1',
在控制器中进行调用即可
8.6.3. 模块级别函数
Application/Admin/Common/下建立f2.php进行调用load('@/f2');
9. 其他
9.1. 安全
9.1.1. sql注入
9.1.2. XSS
转义Html元字符,使用htmlentities、htmlspecialchars,strip_tagsXSS安全过滤的remove_xss方法
PDO数据连接
9.2. 验证码
function verify(){ $config=array( 'fontsize'=>25, 'imageH'=>80, 'imageW'=>80, 'length'=>4, ); $vf=new \Think\Verify($config); $vf->entry(); }
9.3. 验证判断
相关文章推荐
- 【转】web测试常用的用例及知识(全)
- 最常用的也是最容易忘记的Shell知识
- iframe常用属性知识
- C#知识体系(一) --- 常用的LInq 与lambda表达式
- 详解vue-router 2.0 常用基础知识点之router-link
- AS3及Flex的百条常用知识
- 平时积累常用知识
- PHP常用的小知识
- JavaSE复习之三 基础知识:常用API
- 常用Shell知识总结
- Java学习笔记(十三一)——Xml 常用知识总结
- android 项目进阶常用知识
- AVRO : 常用知识总结
- TP框架基础知识
- Spread控件基础知识(基本常用属性事件等)
- python基础知识整理——常用内置函数整理
- asp.net中的一些常用的基础小知识
- 常用的机器学习&数据挖掘知识(点)总结
- ORACLE --- 常用知识
- MYSQL常用操作 知识梳理