ThinkPHP-PHP开发中的主流框架

PHP中的框架是什么?框架就是通过提供一个开发Web程序的基本架构,PHP开发框架把PHPWeb程序开发摆到了流水线上。换句话说,PHP开发框架有助于促进快速软件开发(RAD),这节约了开发时间,有助于创建更为稳定的程序,并减少开发者的重复编写代码的劳动。

框架专门用于为这些常用元素(数据库交互、表示层、应用程序逻辑)提供结构,以便可以花费更少的时间来编写数据库接口代码或者表示层接口,而花费更多的时间来编写应用程序本身。以这种方式分解应用程序,这种架构被称为模型-视图-控制器(Model-View-Controller,MVC)。模型(Model)指数据,视图(View)指表示层,而控制器(Controller)指应用程序逻辑或业务逻辑。

一、PHP中常见的框架之ThinkPHP

ThinkPHP框架是PHP最常见的框架之一,也是目前市面上的主流框架。ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁 实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在易用性、扩展性和性能方 面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

目前市面上的TP框架有两大分支:TP3.X和TP5

① ThinkPHP基于MVC的PHP框架

M – Model       模型                   工作:负责数据的操作
V – View          视图(模板)       工作:负责前台页面显示
C – Controller  控制器(模块)    工作:描述功能,逻辑上的业务处理

 MVC示意图
MVC示意图

② ThinkPHP核心文件介绍

├─ThinkPHP.php     框架入口文件
├─Common 框架公共文件
├─Conf 框架配置文件
├─Extend 框架扩展目录
├─Lang 核心语言包目录
├─Lib 核心类库目录
│  ├─Behavior 核心行为类库
│  ├─Core 核心基类库
│  ├─Driver 内置驱动
│  │  ├─Cache 内置缓存驱动
│  │  ├─Db 内置数据库驱动
│  │  ├─TagLib 内置标签驱动
│  │  └─Template 内置模板引擎驱动
│  └─Template 内置模板引擎
└─Tpl 系统模板目录

③ url的4种访问方式

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

2.普通模式:http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2

3.REWRITE模式:http://域名/项目名/模块名/方法名/键1/值1/键2/值2

4.兼容模式:http://域名/项目名/入口文件?s=模块名/方法名/键1/值1/键2/值2

④ TP中的几种输出方式

a、通过 echo 等PHP原生的输出方式在页面中输出
b、通过display方法输出(想分配变量可以使用assign方法)
c、修改左右定界符

要修改配置文件中的配置项:

'TMPL_L_DELIM'=>'<{', //修改左定界符
'TMPL_R_DELIM'=>'}>', //修改右定界符

⑤ TP中最简单实用模型的方式

M() 等效为 new Model();

$m=M('User');
$arr=$m->select();

⑥ 输出模板内容

a、display方法
1.display中没有参数

$this->display();

2.可以带参数

$this->display(本模块文件夹下的其他模板文件);
$this->display(‘index2′);
$this->display(其他文件夹下的模板文件);
$this->display(‘Public:error’);//注意,仅仅需要在Tpl下有Public文件夹以及其中的error.html即可,不需要一定有Public模块

b、fetch方法
获得模板文件中的内容,以字符串形式返回

$content=$this->fetch('Public:error');

c、show方法
不需要模板文件,可以直接输出模板内容

$content=$this->fetch('Public:error');
dump($content);
$content=str_replace('h1','i',$content);
$this->show($content);

⑦ 重定向

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

参数说明:
第一个参数:要跳转的链接地址
第二个参数:传递的参数,要求格式为数组
第三个参数:等待时间
第四个参数:输出信息

⑧ 字段映射
使用create方法完成数据对象的创建,则表单里面文本域名称必须要和数据表的字段名称一致,如果一致,就暴露了数据表里面表结构,带来安安全隐患。就可以使用一个字段映射的功能,设置为和表里面的字段不一致。

该功能需要在自定义模型里面定义

thinkphp2

⑨ 模型中连贯操作

$model->方法1()->方法2()->方法n()->select();

⑩ 自动验证
主要是验证表单提交的数据的合法性,验证表单数据的合法性,有两种方式,一种是通过前端js代码来验证,一种是数据入库之前的php代码验证。在实际开发中,两种方式都要有,前端js验证。前端js代码用户是可以禁用的,因此要进行php代码验证,达到双重验证。

字段验证的方式是集成到模型里面的create方法里面,注意在使用create方法之前需要将配置文件中的extension=php_mbstring.dll打开

实用项:
1. 代码流程追踪:在配置文件里面'SHOW_PAGE_TRACE'=TRUE
2. TP中的事务:

$User->startTrans():开启事务处理
$User->commit()   :如成功,则提交
$User->rollback() :如失败,则回滚

3. 模型里面的trueTableName属性:
建立一个模型,在默认操作时,是操作的前缀+模型名称的表,可以通过trueTableName属性设置变成操作其他的表
4. TP中常用的字母函数:
S函数:缓存管理方法,3.1.2版本后因cache方法并入原S方法,所以cache方法不再建议使用,用S方法即可;
U函数:U方法用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的URL地址:U(‘地址’,’参数’,’伪静态’,’是否跳转’,’显示域名’);
D函数:D方法是用的比较多的,用于实例化自定义模型类,是ThinkPHP框架对Model类实例化的一种封装,并实现了单例模式,支持跨项目和分组调用,调用格式如下:D(‘[项目://][分组/]模型’,’模型层名称’),方法的返回值是实例化的模型对象。
M函数:M方法用于实例化一个基础模型类。M方法的调用格式:M(‘[基础模型名:]模型名’,’数据表前缀’,’数据库连接信息’)

注意:M和D的区别:

1、M不需要自定义模型类,减少IO加载,性能较好;
2、实例化后只能调用基础模型类(默认是Model类)中的方法;
3、可以在实例化的时候指定表前缀、数据库和数据库的连接信息;
A函数:A方法用于在内部实例化控制器,调用格式:A(‘[项目://][分组/]模块’,’控制器层名称’)
R函数:R方法用于调用某个控制器的操作方法,是A方法的进一步增强和补充,R方法的调用格式:R(‘[项目://][分组/]模块/操作’,’参数’,’控制器层名称’)
C函数:C方法是ThinkPHP用于设置、获取,以及保存配置参数的方法,使用频率较高
N函数:N方法属于计数器方法,被用于核心的查询、缓存统计的计数和统计。但是其实可以用于应用的其他计数用途,用法比较简单,调用格式:N(‘计数位置'[,’步进值’])
L函数:L方法用于启用多语言的情况下,设置和获取当前的语言定义,调用格式:L(‘语言变量'[,’语言值’])
session函数:Session方法用于Session 设置、获取、删除和管理操作
cookie函数 :cookie函数也是一个多元化操作函数,完成cookie的设置、获取和删除操作。

TP特性总结:
1.多表查询非常方便,在model里几句代码就可以完成完成多表的关联操作。
2.融合了smarty框架技术,使前台和后台独立分开
3.支持多种缓存技术,memcache技术支持非常好
4.命名规范,模型,视图和控制器严格遵循命名规则,通过命名一一对应
5.类库扩展、驱动扩展、应用扩展、模型扩展、控制器扩展、标签库扩展、模板引擎扩展、Widget扩展、行为扩展和模式扩展
6.支持多种URL模式
7.自动完成表单数据的验证过滤,生成安全的数据对象
8.内置AJAX数据返回方法,支持JSON、XML和EVAL格式返回客户端
9.内建丰富的查询机制,包括组合查询、复合查询、区间查询、统计查询、定位查询、动态查询和原生查询,让你的数据查询简洁高效
10.系统支持多数据库连接和动态切换机制,支持分布式数据库

发表评论

发表评论

*

沙发空缺中,还不快抢~