ThinkPHP3.2.3

8-09 197 views

核心框架的目录结构

  • Common:函数库目录,存储公用文件,可在控制器中直接调用
  • Conf:配置文件目录,存储配置文件
  • Library:框架核心类库目录
  • Lang:语言包目录
  • Mode:应用模式目录(显式应用模式隐含应用模式
  • Tpl:系统模板目录
  • ThinkPHP.php:框架的入口文件

 

Library核心目录结构

  • Behavior:行为目录
  • Org:功能类目录
  • Think:框架最核心文件目录
  • Vendor:第三方成品功能类包目录

 

创建应用:在网站根目录设置编码、框架模式及引入框架入口文件

  • header("Content-type:text/html;charset=utf-8");
  • define('APP_DEBUG',TRUE);
  • include('../ThinkPHP/Think.php');

 

已有模板与框架结合

  1. 复制模板文件到View目录;
  2. 在入口文件给 静态文件访问路径设置 常量,例如:define('HOME_CSS','/message/Home/Public/css');(从域名开始识别)
  3. 在模板文件中通过定义的路径常量加载相应的静态文件,例如:<?php echo HOME_CSS;?>style.css
  4. css本身有文件引用的话,需要改为该css文件本身的相对路径访问。

 

修改配置文件:采用就近原则,优先配置项目及分组的配置文件

  1. 系统主要的配置文件:ThinkPHP/Conf/convention.php
  2. 项目的配置文件:项目名/Common/Conf/config.php
  3. 项目分组的配置文件:项目名/分组名/Conf/config.php
  4. Behacior行为文件里有一部分,例如:SHOW_PAGE_TRACE(调试界面)
  5. 代码角落有一部分,例如:MODULE_ALLOW_LIST

 

创建控制器Controller:用于Model与View的交互

  • 声明命名空间:一般用分组\Controller,例如:namespace Home\Controller;
  • 使用框架空间:use Think\Controller;
  • 继承控制类:class 控制器名 extends Controller{操作方法}

 

创建模型Model:用于和数据库进行交互

  • 声明命名空间:一般用分组\Model,例如:namespace Home\Model;
  • 使用框架空间:use Think\Model;
  • 继承控制类:class 模型名 extends Model{操作方法}

 

控制器调用视图模板

  • $this->display()——(默认调用 当前分组/控制器/操作方法)
  • $this->display(控制器/模板名称)
  • $this->display(模板名称)

 

四种路由形式

  • 网址/index.php/分组/控制器/操作方法
  • 网址/分组/控制器/操作方法——(可通过修改.htaccess文件去除URL地址里的入口文件index.php)
  • 网址/index.php?m=分组&c=控制器&a=操作方法
  • 网址/index.php?s=/分组/控制器/操作方法

 

GET参数的传递使用

  • 网址/分组/控制器/操作方法/名称1/值1/名称2/值2...
  • function 操作方法($key1,$key2...)

 

隐藏inde.php:去掉URL地址里面的入口文件index.php,额外配置WEB服务器的重写规则

  • 以Apache为例,需要在入口文件的同级添加.htaccess文件,内容为以下:
  • <IfModule mod_rewrite.c>
    Options +FollowSymlinks -Multiviews
    RewriteEngine On
  • RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    </IfModule>
  • 若用的phpstudy,则改为:RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
  • 若apache版本无法使用上述方法,则改为:RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]

 

常用系统常量:可直接在html页面使用,无需php输出语句,tp自带替换机制

  • __ROOT__:网站根目录地址
  • __SELF__:当前URL地址
  • __APP__:当前应用地址
  • __MODULE__:当前分组的URL地址
  • __CONTROLLER__:当前模块的URL地址
  • __ACTION__:当前操作的URL地址
  • __INFO__:当前的PATH_INFO字符串
  • __EXT__:当前URL地址的扩展名
  • MODULE_NAME:当前模块名
  • CONTROLLER_NAME:当前控制器名
  • ACTION_NAME:当前操作名

位于\ThinkPHP\Library\Behavior\ContentReplaceBehavior.class.php

 

创建Admin分组:用于放置后台模板及其操作,将前后台隔开

 

配置文件中修改默认分组及设置可访问分组

  • 'DEFAULT_MODULE' => 'Home',
  • 'MODULE_ALLOW_LIST' => array('Home','Admin')

 

开启smarty模板引擎(修改配置文件即可):ThinkPHP默认模板引擎为其本身

  • 'TMPL_ENGINE_TYPE' => 'Smarty',
  • 'TMPL_ENGINE_CONFIG' => array(
  •         'left_delimiter' => '',
  •         'right_delimiter' => ''
  • )

 

两种模式:开发(调试)、上线模式

1、开发(调试)模式:define('APP_DEBUG',TRUE)

每次请求会自动加载应用程序文件,比较耗费资源,错误提示比较友好,会自动清除common~runtime.php文件,回依次加载需要的文件;

2、上线模式:define('APP_DEBUG',false)

比较节省资源,会把请求过程中的一些通用程序文件给解释到一个文件里边(Runtime/common~runtime.php),减少加载文件数量。

 

实例化Model对象,用于操作对应数据表

  • $model = new \Model\xxxModel();
  • $model = D('表名');——若存在对应模型,则实例化对应模型类;若不存在,则直接实例化基类,可在对应model模型不存在的情况下对表进行操作
  • $model = new M('表名');——默认实例化基类

 

model对象的基本操作

添加数据

  • add()——返回新纪录的主键id值
  • 数组方式:数组的元素键名与数据表字段的名称必须一致;
  • AR方式(Active Record活跃记录)

删除数据

  • delete()——返回删除的记录数目
  • delete('id')/delete('id1,id2,id3...')

修改数据

  • save()——返回修改的记录数目
  • 数组方式、AR方式
  • 必须设置条件,主键ID或where()方法,二选一即可

查询数据

  • select()——返回二维数组
  • select('id')/select('id1,id2,id3...');
  • find('id')——通过一维数组形式返回一条记录结果

辅助方法:field()/where()/limit()/group()/order()/having()

having与where的区别

  • where:条件字段必须是在数据库中存在的字段
  • having:......结果集......

可连贯操作,无顺序要求,底层自动拼接成SQL语句

  • 例如:$model->limit()->order()->field()->having()->group()

方法位置

  • where()/limit()/field():位于父类model
  • having()/order()/group():位于model的魔术方法__call()里

执行原生SQL语句

  • 查询:$model对象->query($sql);——返回一个二维数组结果
  • 增/删/改:$model对象->execute($sql);——返回受影响记录条数

 

常用功能及其文件位置

  • 验证码:Library->think->Verify.class.php
  • 附件上传:......Upload.class.php
  • 缩略图:......Image.class.php
  • 自定义工具类:可放于 项目/Tools/xxx.class.php,声明空间  namespace Tools

 

页面跳转

  • 系统的\Think\Controller类内置了两个跳转方法success和error,用于页面跳转提示,而且可以支持ajax提交。
  • success和error方法的第一个参数表示提示信息,第二个参数表示跳转地址,第三个参数是跳转时间(单位为秒)
  • 例如:$this->success('操作完成','/Article/index',3);

 

重定向

  • Controller类的redirect方法可以实现页面的重定向功能;
  • 例如:$this->redirect('New/category', array('cate_id' => 2), 5, '页面跳转中...');
  • 也可以直接使用redirect函数重定向
  • 例如:redirect('/New/category/cate_id/2', 5, '页面跳转中...')
  • 控制器的redirect方法和redirect函数的区别在于前者是用URL规则定义跳转地址,后者是一个纯粹的URL地址。

 

数据表字段缓存

  • tp会自动把数据表的字段缓存,加快处理速度,但调试过程要注意清除runtime缓存

 

开启SESSION

  • 在配置文件中加入:'SESSION_AUTO_START' =>true

欢迎留言