PHP 中的框架是什么?
框架就是通过提供一个开发 Web 程序的基本架构,PHP 开发框架把 PHPWeb 程序开发摆到了流水线上。换句话说,PHP 开发框架有助于促进快速软件开发(RAD),这节约了开发时间,有助于创建更为稳定的程序,并减少开发者的重复编写代码的劳动。
框架专门用于为这些常用元素(数据库交互、表示层、应用程序逻辑)提供结构,以便可以花费更少的时间来编写数据库接口代码或者表示层接口,而花费更多的时间来编写应用程序本身。以这种方式分解应用程序,这种架构被称为模型-视图-控制器(Model-View-Controller,MVC)。模型(Model)指数据,视图(View)指表示层,而控制器(Controller)指应用程序逻辑或业务逻辑。
一、PHP 中常见的框架之ThinkPHP
TP 框架(ThinkPHP):
ThinkPHP 框架是 PHP 最常见的框架之一,也是目前市面上的主流框架。ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级 PHP 开发框架 ,是为了敏捷 WEB 应用开发和简化企业应用开发而诞生的。ThinkPHP 从诞生以来一直秉承简洁 实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在易用性、扩展性和性能方 面不断优化和改进,已经成长为国内最领先和最具影响力的 WEB 应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。
目前市面上的 TP 框架有两大分支:TP3.X 和 TP5
① ThinkPHP 基于 MVC 的 PHP 框架
M – Model 模型 工作:负责数据的操作
V – View 视图(模板) 工作:负责前台页面显示
C – Controller 控制器(模块) 工作:描述功能,逻辑上的业务处理
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 中的几种输出方式
ThinkPHP 中的输出:
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 方法完成数据对象的创建,则表单里面文本域名称必须要和数据表的字段名称一致,如果一致,就暴露了数据表里面表结构,带来安安全隐患。就可以使用一个字段映射的功能,设置为和表里面的字段不一致。
该功能需要在自定义模型里面定义
⑨ 模型中连贯操作
语法:$model->方法 1()->方法 2()->方法 n()->select();
⑩ 自动验证
主要是验证表单提交的数据的合法性,验证表单数据的合法性,有两种方式,一种是通过前端 js 代码来验证,一种是数据入库之前的 php 代码验证。在实际开发中,两种方式都要有,前端 js 验证。前端 js 代码用户是可以禁用的,因此要进行 php 代码验证,达到双重验证。
字段验证的方式是集成到模型里面的 create 方法里面,注意在使用 create 方法之前需要将配置文件中的 extension=php_mbstring.dll 打开
实用项:
⑴ 代码流程追踪:在配置文件里面‘SHOW_PAGE_TRACE’=TRUE
⑵ TP 中的事务:
$User->startTrans():开启事务处理
$User->commit() :如成功,则提交
$User->rollback() :如失败,则回滚
⑶ 模型里面的 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.系统支持多数据库连接和动态切换机制,支持分布式数据库
沈唁志|一个PHPer的成长之路!
原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:ThinkPHP-PHP开发中的主流框架