ThinkPHP-PHP开发中的主流框架

2018-05-24 15:45:38 浏览数 (1)

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开发中的主流框架

0 人点赞