全新ThinkPHP框架笔记(都是干货)

全新ThinkPHP框架笔记(都是干货)
全新ThinkPHP框架笔记(都是干货)

ThinkPHP学习笔记

【thinkphp的优点】

1.自动加载,动态编译,节约系统效率

2.ajax,视图,分组,权限管理,关联操作,主从数据库,缓存

3.自动验证,自动完成,映射

4.支持4种url解析模式,方便seo

【版本说明】

A: alpha 内部测试

B: beta 公开测试或者给客户进行测试

C: RC 开发倒计时,一般没什么问题

F:final 正式版本

【主入口文件可选配置】

开启调试模式:define(‘APP_DEBUG’,’TRUE’); //将模拟linux操作系统来帮我们识别大小写,而且方法名的大小写与模板文件的大小写相关

定义公共模块的目录,放到应用目录外

define('COMMON_PATH', './Common/');

【url访问规则】

访问模式:

0 普通模式:参数形式

1 pathinfo模式:http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2

智能识别'URL_PATHINFO_MODEL'=>1;

非智能识别:m/模块名/a/方法名'URL_PATHINFO_MODEL'=>1;

2 rewrite重写:伪静态,index.php取消掉

3 兼容模式:http://域名/index.php?s=/user/g

修改方法:

在config.php中,增加配置项:'URL_MODEL'=>1(or 2,3,0);

重写模式要在apache配置中(httpd.conf)开启rewrite,.htaccess(记事本添加可以在保存名字的时候加上双引号)

注:通过url不能执行私有方法,但定义的私有方法的意义体现在可以对该类下的公有方法的验证等相关操作

【配置】

修改url的分隔符:’URL_PATHINFO_DEPR’=>’/’

修改模板定界符:’TMPL_L_DELIM’=>’<{’, ’TMPL_R_DELIM’=>’}>’

开启页面trace :‘show_page_TRACE’=>true,

大C方法:读取配置文件参数,可利于此分配到模板中调用

eg:$a=C('DB_HOST');

【控制器的使用】

1.渲染视图

$this->display():

//参数1:模板,参数2:编码;参数3:类型(xml,txt)

加载其他的控制器下面的模板:$this->display('index:login');

加载其他模板目录的模板:目录名@模块名:模板名

加载自定义路径的模板:直接写全相对路径和模板名(加上后缀),以主入口文件为相对位置

2.参数传递

C:$this->assign(‘data’,$name);

V:hello {$data} //动态数据的输出,{}为默认定界符

3.跳转:

// 操作完成3秒后跳转到/Article/index

$this->success('操作完成','你的路径',3);

// 操作失败5秒后跳转到/Article/error

$this->error('操作失败','/Article/error',5);

4.重定向:

$this->redirect('New/category', array('cate_id' => 2), 5, '页面跳转中...');

5. 安全获取用户数据:

I('post.');

I('https://www.360docs.net/doc/638191176.html,ername') ==== $_POST['username']

6.生成url

U('url路径',array()) //array传递参数

U('index/test',array('id'=>10))

7.关于空操作:

防止黑客不断的请求网站的各种页面,通过一些错误信息来判断网站的框架,编写语言以及数据库类型等信息,不利于网站的安全

用处:实现错误页面和一些URL的优化

php原生处理方式:

魔术方法:__call($method,$arg){echo '您操作的方法不存在'}; //参数:方法,参数Thinkphp处理方式:_empty(){}

8.关于跨模块操作:

A("") //实例化控制器对象

R("模块/控制器/操作") //实例化控制器对象并调用相关方法

【常量相关】

系统常量:

__ROOT__ // 项目根目录地址

__APP__ //当前项目的入口文件地址

__URL__ //当前模块地址

__SELF__ /当前url地址

自定义常量:

在相应的配置文件进行如下配置:

'TMPL_PARSE_STRING'=>array(

'__A__'=>'qawedad',

'__B__'=>'asdasda'

)

【关于视图层】

1.数组的遍历:

<{$vo.id}>|<{$https://www.360docs.net/doc/638191176.html,ername}> 得到数组的值

2.模板url替换

{:U('模块/控制器/方法',array('key'=>'value'))} 会自动为你生成一个url

__MODULE__/控制器/方法/参数===等价于https://www.360docs.net/doc/638191176.html,/index.php/模块名__APP__/模块/控制器/方法/参数===等价于https://www.360docs.net/doc/638191176.html,/index.php/模块/控制器/方法/参数

__URL__/方法/参数==== 等价于https://www.360docs.net/doc/638191176.html,/index.php/module/controller/方法

__ROOT__ https://www.360docs.net/doc/638191176.html,/模块/控制器/方法/参数

3. css/ js/ image加载

(1). 传统方法: