ThinkPHP学习笔记
【发布时间:2014-04-25 20:04:16   发布人:程鹏辉   浏览次数:626 】

thinkphp命名

文件名采用驼峰法,首字母大写
类名和文件名一致方法和属性采用驼峰法,首字母小写
函数名采用小写字母加下划线
数据表加字段采用小写字母加下划线
配置参数和常量使用大写字母加下划线以
双下划线打头的是魔术方法


thinkPHP目录结构

系统目录:
common目录下放公用函数
lang目录下放语言包
lib基类类库目录 lib/org第三方公共类库
tpl系统模板目录
mode框架模式扩展目录
vender第三方类库目录
项目目录:
command项目公共文件
conf项目配置目录
lib项目类库目录
tpl项目末班目录
runtime项目运行缓存和日志目录


thinkphp惯例配置文件

Thinkphp/common/convention.php
项目配置文件
Conf/config.php


thinkPHP缓存

define('RUNTIME_PATH','./MyApp/temp/'); 定义缓存存放路径
define('NO_CACHE_RUNTIME',True); 不生成核心缓存
define('STRIP_RUNTIME_SPACE',false); 对于编译缓存的内容是否去掉空白和注释


thinkPHP类库导入,Think,ORG,Com将默认为系统基类库下相关目录

import("Think[ORG][Com].util.session") 将导入系统基类的lib/Think[ORG][Com]/util/session.class.php
import("MyApp.Action.UserAction") 将导入MyApp/lib/Action/UserAction.class.php
等同于 import("@.Action.UserAction");
Vender('Zend.Filter.Dir') 将导入第三方类库目录vender/zend/fileter/dir.php
'APP_AUTOLOAD_PATH' => 'Think.Util.,ORG.Util.', 设置附加文件的自动导入路径,增加了一个ORG目录下
,注意需要多加一个点。


thinkPHP入口文件

define("THINK_PATH","./ThinkPHP");
define("APP_PATH","./home");
require(THINK_PATH."/ThinkPHP.php");
App::run();


thinkPHP常用项目配置,位于项目目录下的conf/config.php

return array('APP_DEBUG'=>true,'DB_DSN' =>'mysql://root@localhost:3306/thinkphp');
在方法中临时设置某一配置值采用 C('参数名称','新的参数值');


thinkPHP分组

配置文件中加入
'APP_GROUP_LIST'=>'Home,Admin',
'DEFAULT_GROUP'=>'Home',
项目目录结构中,每层加上Home,Admin的文件夹分层
访问效果
index.php/Home/index,由于Home是默认分组,所以还可以写为 index.php/index
idnex.php/Admin/index
model类可以不分组


URL伪静态

'URL_HTML_SUFFIX' =>'.shtml', 将所有路径后加上.shtml的伪静态效果


URL重写

apache的http.conf配置文件中加载 mod_rewrite.so模块
AllowOverride None的None改为All
确保URL_MODEL设置为2
将.htaccess文件放到入口文件同级目录下

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

重启后就可以省略掉index.php


URL访问不再区分大小写

'URL_CASE_INSENSITIVE' => true
但如果我们定义一个UserTypeAction模块类,相应的多单词的模块名将变为
/index.php/user_type/list
而不能是
/index.php/usertype/list


空操作

如果系统找不到相应的方法,将定位于_empty方法
Public function _empty(){
如果找不到相应的模块,将定位于空模块EmptyAction
Class EmptyAction extends Action{


调用其他项目的其他模块中的方法

R("User","importUser","App2") 调用app2项目中的 UserAction模块中的importUser方法
R方法的调用格式:
R('[项目://][分组/]模块/操作','参数','控制器层名称')
R('Admin://Tool/User/info') //表示调用Admin项目Tool分组的User模块的info操作方法
R('User/info',array(15)) 表示调用当前项目的User模块的info操作方法,并且id参数传入15


重定向

success可以设置为ajax返回,如:$this->success("新增成功!",true)
还可以使用重定向 $this->redirect('User/list', array('cate_id'=>2), 5,'页面跳转中~')
停留5秒后跳转刡User模块癿list操作,并且显示页面跳转中字样