ThinkPHP开发手册学习笔记

这是我之前学习ThinkPHP框架记录的一些笔记,在此做个保存也做个分享!

一、ThinkPHP下MVC结构和配置


1.MVC开发模式

1)M:model类
2)V:view前台模板
3)C:control控制器


2.URL模式  
 
1)普通模式(0模式)
http://localhost/项目文件地址/index.php?m=Index&a=index

2)PATHINFO模式(1模式)
http://localhost/项目文件地址/index.php/Index/index

3)REWRITE模式(2模式)
http://localhost/项目文件地址/Index/index/id/5

4)兼容模式(3模式)
http://localhost/项目文件地址/index.php?s=/Index/index

*********1)入口文件 2)Index模板类文件 IndexAction.class.php   3)index类方法

3.配置:


1)全局配置文件:www\testWebsite\ThinkPHP\Conf\convention.php

/* 数据库设置 */
    'DB_TYPE'               => 'mysql',     // 数据库类型
    'DB_HOST'               => 'localhost', // 服务器地址
    'DB_NAME'               => '',          // 数据库名
    'DB_USER'               => 'root',      // 用户名
    'DB_PWD'                => '',          // 密码
    'DB_PORT'               => '',        // 端口s
    'DB_PREFIX'             => 'think_',    // 数据库表前缀

2)局部配置文件:www\testWebsite\Home\Conf\config.php

  'DB_NAME'               => 'mytp2',          // 数据库名

4.获取配置文件中的选项

用echo C('DB_NAME');公共函数C();  (实例化模型:M())  
                 
5.加载公共资源文件下的内容(比如js,css)的路径:

1)直接写绝对路径没有问题,能正常访问,但是相对路径的话TP会干预的

2)模板替换,用TP自定义的“__PUBLIC__”:实际情况下“__PUBLIC__”会被替换成当前网站的公共目录,通常是 /Public/,例如:href="__PUBLIC__/CSS/login.css"

二、ThinkPHP中函数和类库(控制器)


1.函数 (在一个大文件中快速寻找函数和方法:sublime中快捷键ctrl+r)


1)全局函数文件:ThinkPHP\Common\common.php
2)应用函数文件:Home\Common\common.php

2.控制器:跨模块调用

1)A()

A方法还支持跨分组或者跨项目调用,默认情况下是调用当前项目下面的模块。

跨项目调用的格式是:

A('[项目名://][分组名/]模块名')

例如:

    A('User') //表示调用当前项目的User模块

    A('Admin://User') //表示调用Admin项目的User模块

    A('Admin/User') //表示调用Admin分组的User模块

    A('Admin://Tool/User') //表示调用Admin项目Tool分组的User模块

2) R()

R方法表示调用一个模块的某个操作方法,调用格式是:

R('[项目名://][分组名/]模块名/操作名',array('参数1','参数2'…))

例如:

R('User/info') //表示调用当前项目的User模块的info操作方法

R('Admin/User/info') //表示调用Admin分组的User模块的info操作方法

R('Admin://Tool/User/info') //表示调用Admin项目Tool分组的User模块的info操作方法

三、ThinkPHP路由和重写


1.URL重写

通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php ,通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持。
下面是Apache的配置过程,可以参考下:
1)、httpd.conf配置文件中加载了mod_rewrite.so模块
2)、AllowOverride None 将None改为 All
3)、确保URL_MODEL设置为2(不重要)
4)、把下面的内容保存为.htaccess文件放到入口文件的同级目录下

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    </IfModule>

5).重启Apache:
原来的 http://serverName/index.php/Blog/read/id/1
就可以通过访问 http://serverName/Blog/read/id/1
简化了URL地址

2.路由

ThinkPHP支持URL路由功能,要启用路由功能,需要设置URL_ROUTER_ON 参数为true。开启路由功能后,并且配置URL_ROUTE_RULES参数后,系统会自动进行路由检测,如果在路由定义里面找到和当前URL匹配的路由名称,就会进行路由解析和重定向。

'URL_ROUTER_ON'   => true, //开启路由
'URL_ROUTE_RULES' => array(
//定义路由规则
'news/:year/:month/:day' => array('News/archive', 'status=1'),
'news/:id'               => 'Index/index',
),

3.URL生成
使用U()方法,生成统一的url路径便于后期维护和管理
1)U('index') ;假设当前模块是UserAction
/项目文件名/index.php/User/index
2)U('Shop/index');
/项目文件名/index.php/Shop/index
3)U('Shop/delete','id=5&name=user1');
/项目文件名/index.php/Shop/delete/id/5/name/user1
4)U('Shop/edit',array('id'=>'5','name'=>'user1'));
/项目文件名/index.php/Shop/edit/id/5/name/user1

*******
配合convention.php文件使用:
'URL_MODEL'             => 1,
'URL_HTML_SUFFIX'       => '',  // URL伪静态后缀设置

四、ThinkPHP页面跳转和重定向


1.页面跳转

$this->success('新增成功', 'User/list');
2.重定向
$this->redirect('New/category', array('cate_id' => 2), 5, '页面跳转中...');

五、ThinkPHP模板替换和Ajax数据交互


1.模板替换内容
1)__ROOT__:会替换成当前网站的地址(不含域名)
/testWebsite
2)__APP__:会替换成当前项目的URL地址 (不含域名)
/testWebsite/index.php
3)__URL__:会替换成当前模块的URL地址(不含域名)
/testWebsite/index.php/Index
4)__ACTION__:会替换成当前操作的URL地址 (不含域名)
/testWebsite/index.php/Index/index
5)__SELF__:会替换成当前的页面URL
/testWebsite/index.php/Index/index/id/5
6)__PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/
/testWebsite/Public
7)../Public:会被替换成当前项目的公共模板目录
通常是 /项目目录/Tpl/当前主题/Public/
/testWebsite/Home/Tpl/

2.Ajax数据交互
1)如何在php中将多个数据带给js?
php:可以用json_encode()方法将数组类型转化为json字符串;
js:利用get方法的第四个参数接收json对象,
$.get('',{},function(){},'json');

2)如何得到一个大页面内容
首先js发起ajax;
php中的方法将数据分配给自己的模板;
方法和模板将混编结果给js

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值