挺感谢后盾网的黄老师,讲的很好,受益匪浅。

补充一下,是3.1.3的版本。现在3.2了。

1、__PUBLIC__和__UPLOADS__一样,但是和__ROOT__不同。
__ROOT__ 就是为当前的根目录。是个常量。
前两个不是常量,defined(__PUBLIC__)为假。

2、默认修改__PUBLIC__的路径可以在--模版替换中查找 'TMPL_PARSE_STRING'  ,这是一个数组,直接指定__PUBLIC__的路径即可。所有可以分别指定前台后台的public文件夹,在各自的config里。

3、LOAD_EXT_FILE可以加载在common中的以非common.php命名的公用函数,当然也可以采用临时使用方法的方法:load("@.user")。但是只针对当前模块当前方法使用。

4、如果采取多入口,(admin.php 和index.php在同级目录下,)可以在根目录下直接创建一个Conf文件夹,然后里面放config.php,但是这个文件并不会自动加载,需要在前台和后台的配置项目中的config文件夹中用array_merage(include './Conf/config',$config),组合。其中公用配置中放公用配置,$config中放前/后台的私有配置。同样共享公用配置,并拥有自己的配置选项。

5、类似于__ROOT__ APP_NAME APP_PATH 
DB_HOST'=>',
'DB_NAME'=>
'DB_USER'=>'',
'DB_PWD'=>'',
'DB_PREFIX'=>'
如果想更改类似的东西,去 D:\AppServ\www\testthink\ThinkPHP\Conf这个文件下去找就可以了。

6、项目配置文件,自动的采用'URL_MODEL'=>1,就是pathinfo方法。
也就是你echo U('Index/index');的结果是:/testthink/index.php/Index/index.html
如果 'URL_MODEL'=>0 结果是:/testthink/index.php?m=Index&a=index
0 的情况适用于空间或者服务器不支持pathinfo的方法。直接更改就可以了。但是很少不支持了。
echo __URL__;输出/testthink/index.php/Index
2的话是apache的rewirte方法,目录为www.baidu.com/index(后面php.html就没有了。)

7、U方法之一:url伪静态,后缀名设置。U方法实际就是帮助生产url地址的。
隐藏掉index.PHP。要把模式设置为2 'URL_MOD'=2,

'URL_HTML_SUFFIX'=>'PHP'一般设置为‘html’或者为空。
如果不想要,可以用U方法的第二个参数
eg:U('Index/index',array('aid'=>1,'uid'=>10)); 会输出:/testthink/index.php/Index/index/aid/1/uid/10
U方法的第三个参数 就是伪静态
eg:U('Index/index',array('aid'=>1,'uid'=>10),'xxxxxx');会输出:/testthink/index.php/Index/index/aid/1/uid/10.xxxxxx
U方法的第四个参数是为是否跳转 (1为跳,0为不跳)
U方法的第五个参数为是否输出域名,1或者true为输出,其他为不输出
一般用U方法的前两个

8、创建自己的公用函数库,在common中,建立一个common.php,可关联第三点。
function p($array){
dump($array,1,'<pre>',0);
}
9、提交地址在tpl模版中要用{:U('Index/handle')};方便管理

10 、I方法,可以接受post或者get表单提交过来的内容.属于3.1.3的内容,但是注意htmlspecailchars($string)没有算在I方法里面。

可以通过I的第三个参数来完善 echo I('content','','htmlspecialchars');放一个函数来处理,应该3.12已经修复了。后话。

一般接受表单提交过来的内容可以用I方法,但是create()不是更好?
$user=M('user')->where(array('username'=>$username))->find();

$user=I('username');$pwd=I('password','',md5'');
if(!$user || $user['password']!=$pwd){
$this->error('帐号或者密码不正确');
}
if($user['lock']){$this->error('用户被锁定');}

11、常量 IS_POST();判断是否是表单提交
eg:if(!IS_POST){_404('你想干嘛?',U('index')};
_404第二个页面是跳转地址 
if(!IS_POST) _404('你想翻墙maa',U('Index/index'));为什么不跳转?因为你开启了调试模式
或者是halt('页面去火星了');
注意错误信息提示要跟是否开启DEBUG信息有关系。

12、define('APP_DEBUG',TRUE);这个是在入口文件里定义的。
13、data方法,也可以直接用creat方法。M('User')=new Model('User');

14、$this->success('陈功','U('Index/index')'); 
$this->error('失败',)//默认会返回提交的页面,相当于后退按钮。

15、$this->where(array('id'=>array('gt',0)))->delete();
delete()必须要where方法才会成功,注意where内的数组用法。

16、 date('Y-m-d H:i:s');
{$v.time|date='y-m-d H:i:s',###}
###代表把当前的参数$v.time放在date的第二个参数上。日期函数

17、分配过来的变量,当在前台循环的时候。$v.id会自动判断传过来的是对象还是数组。

一般最多的就是数组。可以设置提高效率。就要点只解析数组。用到参数
'TMPL_VAR_IDENTIFY'=>'array',

18、'DEFAULT_FILTER'=>'htmlspecialchars',
====================项目分组===
19、去外层的config里面定义项里开启分组和设置默认分组目目录和默认的项目入口目录
<?php
return array(
'APP_GROUP_LIST'=>'Index,Admin',
'DEFAULT_GROUP'=>'Index',
);
?>
20、time int(10)

21、减少文件夹目录访问深层路径的办法,控制器名_模版名,在config.php中高配置
'TMPL_FILE_DEPER'=>'_',
22、js中拿到其他模块链接的两种方法。注意如果分组模式需要手动添加多出来的Index分组模块下的Index控制器,然后再加上方法名字。
<script type='text/javascript'>
var handurl='__APP__/Index/handle';
var handurl='{:U("handle")}';
</script>
注意理解:http://localhost/wishfenzu/index.php/Index/Index/handle。分组模式下的目录结构。

23、判断是否为Ajax提交的方法 var_dump(IS_AJAX);
$.post(handurl,{username:username.val(),content:content.val()},function(data){

},'json'
),

通过远程 HTTP POST 请求载入信息。(具体可查看Jquery手册)

这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。

参数
url,[data],[callback],[type]String,Map,Function,StringV1.0url:发送请求地址。

data:待发送 Key/value 参数。

callback:发送成功时回调函数。

type:返回内容格式,xml, html, script, json, text, _default。

24、 指定错误页面模版路径,可以由halt('页面不存在,'),和_404页面是一样的结局。
'TMPL_EXCEPTION_FILE'=>'./Public/Tpl/error.html',
);
可以在指定的目录中用<?php echo $e['message'];来接受,注意,错误页面不接受模版解析。
意思是直接在error.html中写{$e.message},这样是不行的。

25、5秒后设置跳转的方法
<script type='text/javascript'>
window.οnlοad=function(){
setTimeout(function(){
window.location.href="<?php echo __APP__;>";
},5000);

}

</script>
26、默认过滤函数 'DEFAULT_FILTER'=>'',THINK中默认就是htmlspecailchars;

其他方式可以为intval强转

27、将数组写入到文件当中,可联想网站的基本信息配置也可以采取这种方法。
传统方法:$phiz=array(

'zhuangkuang'=>'抓狂',
'baobao'=>'抱抱',
'haixiu'=>'害羞',
'ku'=>'哭',
'xixi'=>'嘻嘻',
'taikaixin'=>'太开心',
'touxiao'=>'偷笑',
'qian'=>'钱',
'huaxin'=>'花心',
'jiyan'=>'挤眼',
);

$str="<?php return \t".var_export($phiz,true).';?>';
file_put_contents('./data/phiz.php',$str);
think中的方法:写入:F('name',$arr,'path');
读出:F('name','','path');

28、Ajax返回状态提示成功的问题。
如果失败返回echo json_encode(array('status'=>0));

THINK中Ajax josn返回的方法为:$this->ajaxReturn(array('status'=>0),'json');

26、think中的验证码的混合模式,是严格区分大小写的,需要js统一调制,或者直接输出数字的验证码。
其中大小宽度,样式格式,session中存取验证码的名称等等是在build验证码的时候。
如下:
buildImageVerify($length,$mode,$type,$width,$height,$verifyName) 
用法 length 验证码的长度,默认为4位数 
model 验证字符串的类型,默认为数字,其他支持类型有0 字母 1 数字 2 大写字母 3 小写字母 4中文 5混合 
type 验证码的图片类型,默认为png  
width 验证码的宽度,默认会自动根据验证码长度自动计算 
height 验证码的高度,默认为22 
verifyName 验证码的SESSION记录名称,默认为verify

27、注意用了select()就别用find()了,这两个的区别要注意。
另外:find方法最多只会返回一条记录,因此limit方法对于find查询操作是无效的

28、页面开启trace 'SHOW_PAGE_TRACE' =>true,

29、自动运行检测的方法。即是初始化的方法 
public function _initialize(){
echo"每个控制器都会执行的方法";
}使用这个方法一般新建一个commonAction 控制器,
Class CommonAction extends Action{
Public function _initalize(){
if(!isset ($_SESSION['uid']) || !isset($_SESSION['username'])){
$this->redirect(Admin/Index/LOING)
}
}

}

30、think中css js的引入 
传统方式:
<link rel='stylesheet' href='__PUBLIC__/Css/public.css'/>
think中引入css的方法 <css file =''/>
think中引入js的方法 <js file=''/>

31、后台添加删除 更改等链接的时候 ,用到U方法传递id的值的要注意格式<td><a href="<{:U('Admin/Cate/dele',array('id'=>$v[id]))}>">[删除]</a>
如果删除的时候,id已经传过来了,并且id为主键,那么直接可以用M('User')->delete('$id');
32、display("index:index ");
$this->display();当然Action下的目录模板
$this->display('index') 当然Aciton下的index目录模板
$this->display('index:index');index Action的目录下的index模板

33、类库导入 
自定义类:在lib下的org目录下。创建 stu.class.php

Lib/Model/InfoModel.class.php类文件。通常我们都是在当前项目里面导入所需的类库文件,所以,我们可以使用下面的方式来简化代码
import("@.Action.UserAction");
import("@.Model.InfoModel");

kzj101 -10个
kpj105- 10箱b
34、当访问空模块,空方法的时候。包括空操作(方法)和空模块(action)。会自动调用。默认是非法操作等。。
相当于魔术方法,写在类里,当调用一个不存在的方法时,会自动触发。
public function _empty($name){die('调用"{$name}" .'不存在'');}

35、前置和后置方法,比如像注册之后推荐信息。_before _after

36、A方法 :跨模块调用,跨组调用。

37、重定向。用户注册之后跳转到之前的支付页面,或者是浏览的id为5的产品的页面。

38、自动验证,自动完成,自动检测。

后盾网 thinkphp 学习笔记相关推荐

  1. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  2. thinkphp学习笔记7—多层MVC

    原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...

  3. thinkphp学习笔记8—命名空间

    原文:thinkphp学习笔记8-命名空间 新版本(3.2)中采用命名空间的方式定义和加载类库文件,解决多个模块之间的冲突问题,并实现了更加高效的自动加载机制. 需要给类库定义所在的命名空间,命名空间 ...

  4. 领扣网算法学习笔记 - 215

    领扣网算法学习笔记 本系列的算法题目来自领扣网 数组类算法第六天 题目:数组中的第K个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 ...

  5. 领扣网算法学习笔记 - 80

    领扣网算法学习笔记 本系列的算法题目来自领扣网 数组类算法第一天 题目: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 示例: 给定 nums ...

  6. 王道论坛《计算机网络》网课学习笔记

    写在前面:本文为笔者学习<计算机网络>时的部分笔记,其余记录在本子上,日后有时间补全. 1 计算机网络体系结构 分层模型及协议 层 协议 网络层 ICMP 数据链路层 HDLC,PPP,S ...

  7. ThinkPHP 学习笔记 ( 一 ) 项目部署:应用部署方式与模块分组部署方式

    /*** ThinkPHP version 3.1.3*/ ThinkPHP ( 官方网站:http://www.thinkphp.cn/ ) 目前最新版本是 3.2.2,它要求 PHP 的版本高于 ...

  8. 汇智网node学习笔记

    快速入门 下载配置 偷懒点,直接官网上下载安装包,像安装一般的软件那样,安装配置就行了.具体的可以百度 node的特点 回调函数 模块 回调函数 由于node基于事件驱动的,回调函数必不可少,我的回调 ...

  9. 自学SQL网之学习笔记(题目+答案)

    最近在重新学习数据库SQL,这里分享一下在使用<自学SQL网>上自学期间所涉及的练习题. 重要的事情要说三遍!仅供参考!仅供参考!仅供参考!!! 当然也悄悄种草一下这个网站练练手还是蛮不错 ...

最新文章

  1. 开源中国iOS客户端学习——(一)Prefix.pch文件
  2. 第六章 非编码RNA鉴定
  3. Dbgrid 中表字段所在的列序号
  4. shell基本语法和执行
  5. ULARGE_INTEGER运算
  6. Oracle_忘记密码
  7. 如何检查列表是否为空?
  8. SharePoint 删除废弃站点步骤
  9. 20200701:力扣194周周赛上
  10. px、pt、em、rem 的区别
  11. 用计算机弹让我做你的眼睛,童珺《让我做你的眼睛 (改编版)》[FLAC/MP3-320K]
  12. Swift 开源项目汇总
  13. 使用微软官方的Winpe系统安装操作系统(包括下载Winpe、制作U盘启动工具、安装操作系统)
  14. 做网站有虚拟服务器,虚拟主机只能做网站吗
  15. [RK3399 Android7.1.2]新增wifibt模块:rtl8822cs驱动以及解决所遇问题
  16. oracle 独占更新,Oracle的共享封锁 独占封锁和共享更新封锁 (3)
  17. 善于计划,善于总结,善于归纳
  18. Java之图片裁剪工具类-yellowcong
  19. 全文检索-Elasticsearch安装、集群和使用超全解读
  20. 7、PCIE总线-PCI、PCIE关系及信号定义

热门文章

  1. CSS3 属性 transform 详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)
  2. python中绝对值怎么表示_python中取绝对值简单方法总结
  3. 高通为自己洗白:证据居然是华为麒麟芯片
  4. [爱思唯尔]投稿流程及走过的坑
  5. torch.ones_like函数和torch.zero_like函数
  6. tp剩余未验证内容-5
  7. 关于SFC无法进行扫描的解决办法
  8. 迅雷看看网站设计分析
  9. [4827][Hnoi2017]礼物——FFT
  10. 16. DICOM图像显示-DCMTK-cda转dicom