这是我之前学习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

ThinkPHP开发手册学习笔记相关推荐

  1. 软件开发流程--学习笔记

    软件开发流程--学习笔记 背景 产生原因及作用 个人理解 软件开发流程 需求 需求调研 需求分析 需求确认 设计 概要设计 详细设计 编码 测试 交付 维护 知识拓展 软件开发生命周期(SDLC) 软 ...

  2. ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步

    http://blog.jobbole.com/85008/ ASP.Net MVC开发基础学习笔记(5):区域.模板页与WebAPI初步 2015/03/17 · IT技术 · .Net, Asp. ...

  3. 微信小程序开发:学习笔记[8]——页面跳转及传参

    微信小程序开发:学习笔记[8]--页面跳转及传参 页面跳转 一个小程序拥有多个页面,我们可以通过wx.navigateTo推入一个新的页面.在首页使用2次wx.navigateTo后,页面层级会有三层 ...

  4. esp8266舵机驱动_arduino开发ESP8266学习笔记四—–舵机

    arduino开发ESP8266学习笔记四-–舵机 使用时发现会有ESP8266掉电的情况,应该是板上的稳压芯片的限流导致的,观测波形,发现当舵机运转时,电源线3.3V不再是稳定的3.3V,大概是在3 ...

  5. 微信小程序开发:学习笔记[9]——本地数据缓存

    微信小程序开发:学习笔记[9]--本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...

  6. 多人网络游戏服务器开发基础学习笔记 II: 帧同步 | 游戏客户端预测原理分析 | FPS 游戏状态同步

    这篇是对书本 网络多人游戏架构与编程 的学习第二篇(第一篇:多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | ...

  7. 阿里云HaaS100物联网开发板学习笔记(六)做个智能灯---一个完整的开发例子

    摘要:本篇文章将前期几个专题综合起来,基于阿里云HaaS100的新固件设计制作一个智能灯.这个智能灯由云平台.手机APP端和设备端组成,基本上涵盖了一个物联网小项目所需的主要步骤. 目录 1.在阿里云 ...

  8. 阿里云HaaS100物联网开发板学习笔记(二)硬件控制初步--让小灯闪烁起来

    摘要:无论是哪种开发板,要想开发特定的功能,必先从GPIO开始,HaaS100开发也是一样.如果仅仅利用HaaS100的联网功能,那简直是太浪费了.HaaS100拥有其他开发板所具备的所有的功能,比如 ...

  9. 阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台

    摘要:本篇文章讲解如何使用JavaScript"轻应用"连接阿里云物联网平台并上报一个数据.仍然延续前几篇文章的结构,从安装软件环境开始讲,以使零基础的同学看了本篇文章之后,也能够 ...

最新文章

  1. pycharm设置编写的脚本页面长行实现自动换行(windows版)
  2. android tag 快捷_Android Studio快捷键生成TAG、Log.x日志输出介绍
  3. QTP的那些事--QTP回放iFrame控件时间非常慢的问题分析
  4. C++程序设计方法3:强制类型转换
  5. js 替换任意字符串中间几位为*星号
  6. [转]OpenCL 教学(一)
  7. mysql order by int_mysql order by是怎么工作的?
  8. java以目标尺寸按原图片像素比缩放切割图片
  9. 利用Python工具进行打包功能
  10. MySQL 一条SQL语句执行得很慢的原因有哪些?
  11. 一款开源的截图神器,支持 macOS/Windows/Linux
  12. 极域电子书包课堂管理系统
  13. 85人教版高中英语第一册第十一课 AT A TAILOR'S SHOP
  14. Unity Twitter登录接入
  15. 如何在Mac Finder中查找/Usr 路径?
  16. 移动apn接入点哪个快_中国移动接入点设置哪个快
  17. window创建l2tp
  18. python分析股票主力_筹码分布及计算原理
  19. ISIS基础知识及配置命令
  20. 莪的拽、像省田各号①样没尽頭队——软件需求规格说明书

热门文章

  1. VS2019调试时,b3dm,cmpt等gis文件无法加载
  2. 好友的微信号被删了,有什么恢复的方法?
  3. addEventListener的3个参数
  4. (四)研发阶段(包括医疗领域等各种领域)涉及DHF、DMR、DHR 、LHR、FMEA、SFMEA等标准规范。
  5. 技术改变生活,激情成就梦想
  6. 网站无障碍工具条使用(idea+js)
  7. 个人私藏精品软件集(附下载地址)
  8. 关于H5项目简单调用手机地图
  9. android手机存储空间猛增,网友实测从安卓升级到鸿蒙2.0:可用内存和机身存储容量都增加了...
  10. Java导出无规则excel,如报销单,申请单,结算单等